strtotime

(PHP 4, PHP 5, PHP 7)

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 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.

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

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()

Changelog

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 E_STRICT e E_NOTICE .

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.

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