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