strtotime
(PHP 4, PHP 5, PHP 7, PHP 8)
strtotime — Interpreta 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.