(PHP 5 >= 5.3.0, PHP 7)
DateTime::createFromFormat -- date_create_from_format — Retorna um novo objeto DateTime formatado de acordo com um formato informado
Estilo orientado à objeto
$format
, string $time
[, DateTimeZone $timezone
= date_default_timezone_get()
] )Estilo procedural
$format
, string $time
[, DateTimeZone $timezone
= date_default_timezone_get()
] )Retorna um novo objeto DateTime formatado de acordo com um formato informado.
format
O formato passado como string. Veja opções de formatação abaixo. Na maioria dos casos, as mesmas letras utilizadas na função date() podem ser utilizadas.
Caractere de format |
Descrição | Exemplo de valores interpretados |
---|---|---|
Dia | --- | --- |
d e j | Dia do mês, com 2 dígitos e zero à esquerda | 01 a 31 ou 1 a 31 |
D e l | Uma representação textual de um dia | Mon até Sun ou Sunday até Saturday |
S | Sufixo ordinal inglês para o dia do mês, 2 caracteres. É ignorado no processamento. | st, nd, rd ou th. |
z | O dia do ano (iniciando em 0) | 0 até 365 |
Mês | --- | --- |
F e M | Um representação completa de um mês, como January ou Sept | January até December ou Jan até Dec |
m e n | Representação numérica de um mês, com ou sem zero à esquerda | 01 até 12 ou 1 até 12 |
Ano | --- | --- |
Y | Uma representação de ano completa, 4 dígitos | Exemplos: 1999 ou 2003 |
y | Uma representação do ano com dois dígitos (que se supõem estar no intervalo 1970-2069) | Exemplos: 99 ou 03 (que será interpretado como 1999 e 2003, respectivamente) |
Tempo | --- | --- |
a e A | Antes/Depois de meio-dia | am ou pm |
g and h | Formato 12-horas de uma hora com e sem zero à esquerda | 1 até 12 ou 01 até 12 |
G and H | ormato 24-horas de uma hora com e sem zero à esquerda | 0 até 23 ou 00 até 23 |
i | Minutos com zero à esquerda | 00 a 59 |
s | Segundos, com zero à esquerda | 00 até 59 |
u | Microssegundos (até seis dígitos) | Exemplo: 45, 654321 |
Fuso Horário | --- | --- |
e, O, P e T | Identificadores de fuso horário, ou diferença para UTC em horas, ou diferença para UTC com dois pontos entre horas e minutos, ou a abreviação do fuso horário | Exemplos: UTC, GMT, Atlantic/Azores ou +0200 ou +02:00 ou EST, MDT |
Data/Hora completa | --- | --- |
U | Segundos desde Unix Epoch (January 1 1970 00:00:00 GMT) | Exemplo: 1292177455 |
Espaço em branco e separadores | --- | --- |
(espaço) | Um espaço ou um TAB | Exemplo: |
# | Um dos símbolos de separação a seguir: ;, :, /, ., ,, -, ( ou ) | Exemplo: / |
;, :, /, ., ,, -, ( or ) | O caractere informado. | Exemplo: - |
? | Um byte randômico | Exemplo: ^ (Saiba que em caracteres UTF-8, será necessário mais que um ?. Neste caso, utilizar o * é a mais provável substituição desejada) |
* | Bytes aleatórios até o próximo separador ou dígito | Exemplo: * em Y-*-d como a string 2009-aWord-08 que corresponderá a aWord |
! | Redefine todos os campo (ano, mês, dia, hora, minute, segundos, fações de segundo e informações do fuso horário) para Unix Epoch | Sem !, todos os campos serão definidos para a data e hora atual. |
| | Redefine todos os campo (ano, mês, dia, hora, minute, segundos, fações de segundo e informações do fuso horário) para Unix Epoch se ainda não foram interpretados até o momento | Y-m-d| definirá o ano, mês e dia para a informação encontrada na string analisada, e definirá as horas, minutos e segundos para 0. |
+ | Se este especificador de formato estiver presente, datas que excedem o limite na string não causarão um erro, mas sim um aviso | Utilize o método DateTime::getLastErrors() para encontrar a existência de uma data que excede os limites. |
Caracteres desconhecidos na string de formato causarão falhas em sua interpretação e uma mensagem de erro será acrescentada a estrutura retornada. Pode-se recuperar as mensagens de erro com o método DateTime::getLastErrors().
Para incluir caracteres literais no parâmetro format
, deve-se
escapá-los utilizando a barra invertida (\).
Se o parâmetro format
não conter o caractere
!, as porções de tempo gerado que não estão
especificadas em format
serão definidas como a hora atual
do sistema.
Se o parâmetro format
contiver o
caracter !, as porções de tempo geradas
que não estão informadas em format
, assim como
valores à esquerda!, serão
definidos para valores correspondentes à Unix epoch.
Unix epoch é 1970-01-01 00:00:00 UTC.
time
String representando a hora.
timezone
Um objeto DateTimeZone representando o fuso horário desejado.
Se o parâmetro timezone
for omitido, e
o parâmetro time
não contiver um fuso horário,
o atual será utilizado.
Nota:
O parâmetro
timezone
e o fuso horário atual são ignorados quando o parâmetrotime
é um timestamp UNIX (exemplo, @946684800) ou quando o fuso horário é informado (exemplo. 2010-01-28T15:00:00+02:00).
Retorna uma nova instância de DateTime ou FALSE
em caso de falha.
Versão | Descrição |
---|---|
5.3.9 |
O especificador de format + foi adicionado.
|
Exemplo #1 Exemplo do método DateTime::createFromFormat()
Estilo orientado à objeto
<?php
$date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');
echo $date->format('Y-m-d');
?>
Estilo procedural
<?php
$date = date_create_from_format('j-M-Y', '15-Feb-2009');
echo date_format($date, 'Y-m-d');
?>
Os exemplos acima irão imprimir:
2009-02-15
Exemplo #2 Complexidades do método DateTime::createFromFormat()
<?php
echo 'Current time: ' . date('Y-m-d H:i:s') . "\n";
$format = 'Y-m-d';
$date = DateTime::createFromFormat($format, '2009-02-15');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";
$format = 'Y-m-d H:i:s';
$date = DateTime::createFromFormat($format, '2009-02-15 15:16:17');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";
$format = 'Y-m-!d H:i:s';
$date = DateTime::createFromFormat($format, '2009-02-15 15:16:17');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";
$format = '!d';
$date = DateTime::createFromFormat($format, '15');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";
?>
O exemplo acima irá imprimir algo similar à:
Current time: 2010-04-23 10:29:35 Format: Y-m-d; 2009-02-15 10:29:35 Format: Y-m-d H:i:s; 2009-02-15 15:16:17 Format: Y-m-!d H:i:s; 1970-01-15 15:16:17 Format: !d; 1970-01-15 00:00:00
Exemplo #3 String de formato com caracteres literais
<?php
echo DateTime::createFromFormat('H\h i\m s\s','23h 15m 03s')->format('H:i:s');
?>
O exemplo acima irá imprimir algo similar à:
23:15:03