strtotime

(PHP 4, PHP 5, PHP 7, PHP 8)

strtotimeInterpreta qualquer descrição de data/hora em texto em inglês em timestamp Unix

Descrição

strtotime(string $time, int $now = ?): int

A função espera que seja informada uma string contendo um formato de data em inglês US, e tentará interpretá-lo para um timestamp Unix (o número de segundos desde January 1 1970 00:00:00 GMT), relativo ao timestamp dado em now, ou a hora atual se now não é fornecido.

Cada parâmetro desta função utiliza o fuso horário padrão, a não ser que um fuso horário seja especificado neste parâmetro. Tome cuidado para não utilizar fusos horários diferentes em cada um dos parâmetros a não ser que seja o pretendido. Veja a função date_default_timezone_get() para verificar as diversas formas de definir um fuso horário padrão.

Parâmetros

time

Uma string de data/hora. Os formatos válidos são explicados em Formatos de Data e Hora.

now

O timestamp que será utilizado como base no cálculo das datas relativas.

Valor Retornado

Retorna um timestamp em sucesso, false caso contrário. Antes do PHP 5.1.0, esta função podia retornar -1 em falha.

Erros

Toda chamada a uma função de data/hora gerará um E_WARNING se o fuso horário não for válido. Consulte também date_default_timezone_set()

Exemplos

Exemplo #1 Exemplo da função strtotime()

<?php
echo strtotime("now"), "\n";
echo
strtotime("10 September 2000"), "\n";
echo
strtotime("+1 day"), "\n";
echo
strtotime("+1 week"), "\n";
echo
strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo
strtotime("next Thursday"), "\n";
echo
strtotime("last Monday"), "\n";
?>

Exemplo #2 Checando por falha

<?php
$str
= 'Not Good';

// em versões antes do PHP 5.1.0 você compararia com -1, ao invés de false
if (($timestamp = strtotime($str)) === false) {
echo
"The string ($str) is bogus";
} else {
echo
"$str == " . date('l dS \o\f F Y h:i:s A', $timestamp);
}
?>

Notas

Nota:

Se o número do ano for especificado no formato com dois dígitos, o valor entre 00-60 será mapeado para 2000-2069 e 70-99 para 1970-1999. Veja as notas a seguir para possíveis diferenças em sistemas 32bit (as datas possíveis acabam em 2038-01-19 03:14:07),

Nota:

O intervalo válido de um timestamp é tipicamente de Fri, 13 Dec 1901 20:45:54 GMT até Tue, 19 Jan 2038 03:14:07 GMT. (Estas são datas que correspondem aos valores máximos e mínimos para um inteiro sem sinal em sistemas 32-bit.)

Em versões anteriores ao PHP 5.1.0, nem todas as plataformas suportam timestamps negativos, então a faixa de sua data pode ser limitada a valores inferiores a Era Unix. Isto significa que datas antes de Jan 1, 1970 não funcionam no Windows, algumas distribuições do Linux, e outros sistemas operacionais.

Em versões do PHP em 64-bit, a faixa válida de um timestamp é praticamente infinita, já que 64 bits pode representar aproximadamente 293 bilhões de anos em ambas direções.

Nota:

Datas nos formatos m/d/y e d-m-y são diferenciadas observando o separador entre os vários componentes: se o separador é uma barra (/), o formato Americano m/d/y é utilizado; enquanto que, se o separador for um traço (-) ou um ponto (.), o formato Europeu d-m-y será utilizado. Entretanto, se o ano foi informado no formato de dois dígitos e o separador for um traço (-, a string de data será interpretada como y-m-d.

Para evitar uma ambiguidade em potencial, o melhor é utilizar datas que seguem a ISO 8601 (YYYY-MM-DD) ou o método DateTime::createFromFormat() sempre que possível.

Nota:

O uso desta função para operações matemáticas não é recomendado. É melhor a utilização dos métodos DateTime::add() e DateTime::sub() no PHP 5.3 e superior, ou o método DateTime::modify() no PHP 5.2.

Veja Também

add a note

User Contributed Notes 1 note

up
1
Vyacheslav Belchuk
11 days ago
Be careful when using two numbers as the year. I came across this situation:

<?php

echo strtotime('24.11.22');
echo
date('d.m.Y H:i:s', 1669324282)  .  "\n\n";

// But
echo strtotime('24.11.2022');
echo
date('d.m.Y H:i:s', 1669237200);

?>

Output:

1669324282
25.11.2022 00:11:22

1669237200
24.11.2022 00:00:00
To Top