Funções de Data/Hora
PHP Manual

mktime

(PHP 4, PHP 5, PHP 7)

mktimeObtém um timestamp Unix de uma data

Descrição

int mktime ([ int $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.

Notas

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.

Parâmetros

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.

Valor Retornado

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

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

Exemplos

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

// Imprime algo como: 2006-04-05T01:02:03+00:00
echo date('c'mktime(123452006));
?>

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(00012321997));
echo 
date("M-d-Y"mktime(0001311997));
echo 
date("M-d-Y"mktime(000111998));
echo 
date("M-d-Y"mktime(0001198));
?>

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(000302000);
echo 
strftime("Last day in Feb 2000 is: %d"$lastday);
$lastday mktime(0004, -312000);
echo 
strftime("Last day in Feb 2000 is: %d"$lastday);
?>

Notas

Cuidado

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.

Veja Também


Funções de Data/Hora
PHP Manual