(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DateTime::createFromFormat -- date_create_from_format — Retorna um novo objeto DateTime formatado de acordo com um formato informado
Estilo orientado a objetos
$format
, string $time
, DateTimeZone $timezone
= date_default_timezone_get()): DateTimeEstilo procedural
$format
, string $time
, DateTimeZone $timezone
= date_default_timezone_get()): DateTimeRetorna 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 a objetos
<?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 produzirão:
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 produzirá algo semelhante a:
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 produzirá algo semelhante a:
23:15:03