mktime

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

mktimeObtém um timestamp Unix de uma data

Descrição

mktime(
    int $hour,
    ?int $minute = null,
    ?int $second = null,
    ?int $month = null,
    ?int $day = null,
    ?int $year = null
): int|false

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.

Quaisquer argumentos opcionais omitidos ou null serão definidos para os valores correntes de acordo com a data e horário locais.

Warning

Favor notar que os argumentos estão em uma ordem não usual: month, day, year, e não na ordem mais razoável year, month, day.

Chamar mktime() sem argumentos não é suportado, e irá resultar em um ArgumentCountError. time() pode ser usada para obter o timestamp atual.

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 faixa de valores para year é algo entre 1901 e 2038.

Valor Retornado

A função mktime() retorna o timestamp Unix dos argumentos informados ou false se o timestamp não couber em um inteiro do PHP.

Registro de Alterações

Versão Descrição
8.0.0 O parâmetro hour não é mais opcional. Se for necessário um timestamp Unix, use a função time().
8.0.0 minute, second, month, day e year agora podem ser nulos.

Exemplos

Example #1 Exemplo básico da função mktime()

<?php
// Configura o fuso horário padrão a ser utilizado.
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));
?>

Example #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));
?>

Example #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 'Último dia em Fev-2000 é: ', date('d', $lastday);

$lastday = mktime(0, 0, 0, 4, -31, 2000);
echo 'Último dia em Fev-2000 é: ', date('d', $lastday);

?>

Veja Também