Como converter String para Data e Data/Hora em PHP
Para converter uma string em Date
e DateTime
, várias funções ou métodos podem ser utilizados, como a combinação de strtotime()
e date()
, utilizando o método da classe DateTime::createFromFormat
ou o método format()
dentro da mesma classe, ou a função PHP embutida de date_create_from_format
.
Combinação de strtotime()
e date
A função strtotime()
retorna o número de segundos passados desde 01 de janeiro de 1970, assim como um timestamp de uma máquina Linux. Ela retorna o total de segundos do parâmetro fornecido passado para a função.
Parâmetros:
Time/Date
(obrigatório) - Este parâmetro especifica a data/hora com formato de string.Now
(opcional) - Este parâmetro é o carimbo de tempo que pode ser utilizado como base para o cálculo de datas relativas.
A função date()
é aquela que formata a data e hora local, e retorna uma nova seqüência de datas formatada.
Parâmetros:
format
(obrigatório) - Este parâmetro especifica o formato da string fornecida.timestamp
(opcional) - Este parâmetro é um carimbo de tempo UNIX inteiro e o valor padrão é a hora local atual.
Para utilizar corretamente tanto strtotime()
() como date()
, utilize strtotime()
na primeira data e depois utilize date()
para convertê-la de volta.
Exemplo:
$oldDate = strtotime('03/08/2020');
$newDate = date('Y-m-d',$time);
echo $newDate;
//output: 2020-03-08
Note: Há uma enorme diferença entre /
e -
ao utilizar como divisor na formatação de uma data, se o separador for um /
então o formato americano m/d/y
é assumido; e se o divisor for um -
, então o formato europeu d-m-y
é assumido. Para evitar ambigüidade, recomenda-se utilizar as datas ISO 8601 (YYYY-MM-DD)
.
Utilize DateTime::createFromFormat
ou date_create_from_format
O DateTime::createFromFormat
é uma função PHP integrada que retorna um novo objeto DateTime
que representa o formato de data e hora. Por outro lado, date_create_fromat
é um estilo de procedimento utilizando o DateTime::createFromFormat
.
Parametros:
-
Format
(obrigatório) - Este parâmetro especifica o formato a ser utilizado. -
Time
(obrigatório) - Este parâmetro representa a string data/hora. Se este parâmetro for NULL, então ele utilizará a data/hora atual. -
Timezone
(opcional) - O fuso horário. O valor padrão é o fuso horário atual. -
Exemplo de
DateTime::createFromFormat
:
echo $dateNew = DateTime::createFromFormat('m-d-Y', '03-08-2020')->format('Y/m/d');
//output: 2020/03/08
- Exemplo de
date_create_from_format
:
echo $dateNew = date_create_from_format("m-d-Y", "03-08-2020")->format("Y-m-d");
//output: 2020/03/08
A única diferença entre date_create_fromat
e DateTime::createFromFormat
é que o DateTime::createFromFormat
não está disponível no PHP 5.2 e abaixo.
Artigo relacionado - PHP Date
- Como adicionar dias em PHP
- Como calcular a diferença entre duas datas usando PHP
- Como Converter DataTime em String em PHP
- Como converter um formato de data em outro em PHP
- Como obter a data e hora atual em PHP