(PHP 4, PHP 5, PHP 7)
mktime — Obtém um timestamp Unix de uma data
$hora
[, int $minuto
[, int $second
[, int $mes
[, int $dia
[, int $ano
[, int $is_dst
]]]]]]] )Retorna o timestamp Unix correspondente aos argumentos informados. Este timestamp é um inteiro longo contendo o número de segundos entre a Era Unix (January 1 1970 00:00:00 GMT), e o tempo especificado.
Argumentos podem ser omitidos da direita para esquerda; quaisquer argumentos omitidos serão definidos para o valor atual de acordo com a data e a hora local.
Nota:
A partir do PHP 5.1, chamar a função sem argumentos fará com que a função mktime() lance um aviso
E_STRICT
: utilize a função time() em substistituição.
hour
O número da hora relativa ao início de determinado dia do
month
, day
e year
.
Valores negativos referenciam a hora anterior a meia noite do dia em questão.
Valores maiores que 23 referenciam a hora correspondente no(s) próximo(s) dia(s).
minute
O número de minutos relativos ao início da hour
.
Valores negativos referenciam minutos da hora anterior.
Valores maiores que 23 referenciam os minutos correspondentes a(s) próxima(s) horas(s).
second
O número de segundos relativos ao início do minute
.
Valores negativos referenciam segundos do minuto anterior.
Valores maiores que 23 referenciam os segundos correspondentes ao(s) próximo(s) minuto(s).
month
O número do mês relativo ao fim do anterior. Valores de 1 a 12 referenciam o calendário normal de meses do ano em questão. Valores menores que 1 (valores negativos, inclusos) referenciam meses do ano anterior em ordem reversa, então 0 é Dezembro, -1 Novembro, e etc. Valores maiores que 12 referenciam meses correspondentes ao(s) próximo(s) ano(s).
day
O número do dia relativo ao final do mês anterior. Valores de 1 a 28, 29, 30 e 31 (dependendo do mês) corresponde a dias normais no mês. Valores menores que 1 (valores negativos, inclusos) corresponde a dias no mês anterior, então 0 é o último dia do mês anterior, -1 é o dia anterior a este, e etc. Valores maiores que o número de dias do mês, referenciam dias correspondentes ao(s) próximo(s) mês(es).
year
O número do ano. Pode conter dois ou quatro dígitos, com os valores
entre 0-69 significando 2000-2069 e 70-100 para 1970-2000. Em
sistemas aonde o time_t é um inteiro assinado de 32 bit, como é mais
comum, o alcance do ano
é algo entre 1901 e
2038. Entretanto, antes do PHP 5.1.0 esse range era limitado para 1970
até 2038 em alguns sistemas (ex. Windows).
is_dst
Este parâmetro pode ser definido para 1 se está no horário de verão (DST),
0 se não está, ou -1 (o padrão) se não se sabe se a hora está dentro
do horário de verão ou não. Se é desconhecido, o PHP tentará compreender por si mesmo.
Isto pode causar resultados inesperados (mas não incorretos).
As vezes será inválido se DST estiver habilitado no sistema em que o PHP está executando ou
is_dst
estiver definido para 1. Se DST estiver habilitado em e.g. 2:00, todos o período de tempo
entre 2:00 e 3:00 será inválido e a função mktime() retornará um valor indefinido
(normalmente negativo).
Alguns sistemas (e.g. Solaris 8) habilitam DST na meia-noite, então a hora
0:30 do dia, quando DST está habilitado, é interpretada como 23:30 do dia anterior.
Nota:
No PHP 5.1.0, este parâmetro tornou-se obsoleto. Como resultado, o novo recurso de manipulação de fuso horário deve ser usado em substituição.
Nota:
Este parâmetro foi removido no PHP 7.0.0.
A função mktime() retorna o timestamp Unix dos argumentos
informados.
Se os argumentos são inválidos, a função retornará FALSE
(em versões anteriores ao PHP 5.1,
-1 era retornado).
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 |
---|---|
7.0.0 |
O parâmetro is_dst foi removido.
|
5.3.0 |
mktime() agora lançará um aviso E_DEPRECATED
se o parâmetro is_dst for utilizado.
|
5.1.0 |
O parâmetro is_dst tornou-se obsoleto.
Fazendo a função retornar FALSE em erro, em vez de
-1.
Reparada a função para aceitar ano, mês e dia passados
como zero.
|
5.1.0 |
Quando chamada sem argumentos, a função mktime() lançará um
aviso E_STRICT . Utilize a função
time() em substituição.
|
5.1.0 |
Agora lança erros |
Exemplo #1 Exemplo básico da função mktime()
<?php
// Configura o fuso horário a ser utilizado. Disponível desde o PHP 5.1
date_default_timezone_set('UTC');
// Imprime: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));
// Imprime algo como: 2006-04-05T01:02:03+00:00
echo date('c', mktime(1, 2, 3, 4, 5, 2006));
?>
Exemplo #2 Exemplo da mktime()
mktime() é útil para a aritmética e validação de data, já que calculará automaticamente o valor correto para a entrada fora do intervalo. Por exemplo, cada uma das seguintes linhas produzirá a string "Jan-01-1998".
<?php
echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997));
echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 1998));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 98));
?>
Exemplo #3 Último dia do próximo mês
O último dia de um mês informado pode ser expressado como o dia "0" do mês seguinte, não o dia -1. Os dois exemplos seguintes produzirão a string "The last day in Feb 2000 is: 29".
<?php
$lastday = mktime(0, 0, 0, 3, 0, 2000);
echo strftime("Last day in Feb 2000 is: %d", $lastday);
$lastday = mktime(0, 0, 0, 4, -31, 2000);
echo strftime("Last day in Feb 2000 is: %d", $lastday);
?>
Em versões anteriores a PHP 5.1.0, timestamps negativos não eram suportados em nenhuma versão conhecida do Windows e em alguns outros sistemas também. Portanto o intervalo válido de anos foi limitado para 1970 até 2038.