(PHP 4, PHP 5, PHP 7)
strtotime — Interpreta qualquer descrição de data/hora em texto em inglês em timestamp Unix
$time
[, int $now
] )
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.
time
Uma string data/hora. Valores 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.
Retorna um timestamp em sucesso, FALSE
caso contrário. Antes do PHP 5.1.0,
esta função podia retornar -1 em falha.
Todas as chamadas a funções de data/hora gerarão um E_NOTICE
se o fuso horário não for válido, e/ou uma mensagem E_STRICT
ou E_WARNING
se utilizar as configurações do sistema ou a variável de ambiente
TZ. Veja também date_default_timezone_set()
Versão | Descrição |
---|---|
5.3.0 |
Em versões anteriores ao PHP 5.3.0, formatos relativos de tempo informados ao argumento
time da função strtotime()
como this week, previous week,
last week, and next week eram
interpretados como um período de 7 dias relativos a data/hora corrente, em vez
do período de uma semana de Segunda-feira a Domingo.
|
5.3.0 |
Em versões anteriores ao PHP 5.3.0, 24:00 não era um formato válido e
strtotime() retornava FALSE .
|
5.2.7 | No PHP 5, em versões anteriores a 5.2.7, solicitar uma certa ocorrência de um dia da semana em um mês, onde este dia fosse o primeiro dia do mês poderia adicionar incorretamente uma semana para ao timestamp retornado. Isso foi corrigido na versão 5.2.7 e posteriores. |
5.1.0 |
Agora retorna FALSE em falha, ao invés
de -1.
|
5.1.0 |
Agora lança erros |
5.0.2 | No PHP 5, em versões superiores a 5.0.2, "now" e outros horários relativos, eram computados erroneamente como a meia noite do dia corrente. Isso difere de outras versões onde era computado corretamente como a hora atual. |
5.0.0 | Microssegundos são aceitos, porém ignorados. |
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);
}
?>
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.