(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()
] ) : DateTimeEstilo procedural
$format
, string $time
[, DateTimeZone $timezone = date_default_timezone_get()
] ) : DateTimeRetorna um novo objeto DateTime formatado de acordo com um formato informado.
formatO 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.
timeString representando a hora.
timezoneUm 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
timezonee 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