Como converter String para Data e Data/Hora em PHP

Ralfh Bryan Perez 30 janeiro 2023
  1. Combinação de strtotime() e date
  2. Utilize DateTime::createFromFormat ou date_create_from_format
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

Artigo relacionado - PHP String