mktime

(PHP 4, PHP 5, PHP 7, PHP 8)

mktimeObtém um timestamp Unix de uma data

Descrição

mktime(
    int $hour = date("H"),
    int $minute = date("i"),
    int $second = date("s"),
    int $month = date("n"),
    int $day = date("j"),
    int $year = date("Y"),
    int $is_dst = -1
): int

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

Toda chamada a uma função de data/hora gerará um E_WARNING se o fuso horário não for válido. 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.

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

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

  • checkdate() - Valida uma data Gregoriana
  • gmmktime() - Obtém um timestamp Unix para uma data GMT
  • date() - Formatar um timestamp Unix
  • time() - Retorna o timestamp Unix atual

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top