mktime

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

mktimeRestituisce il timestamp Unix per una data

Descrizione

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

Restituisce il timestamp Unix corrispondente agli argomenti forniti. Questo timestamp è un numero intero lungo che contiene il numero di secondi trascorsi tra l'Epoca Unix (1 gennaio 1970 00:00:00 GMT) e l'ora specificata.

Qualsiasi argomento opzionale omesso o null verrà impostato al valore corrente in base alla data e all'ora locali.

Avviso

Si noti che l'ordine degli argomenti è insolito: month, day, year, e non nel più logico ordine di year, month, day.

Chiamare mktime() senza argomenti non è supportato, e produrrà un ArgumentCountError. time() può essere utilizzata per ottenere il timestamp corrente.

Elenco dei parametri

hour

Il numero dell'ora relativo all'inizio del giorno determinato da month, day e year. Valori negativi fanno riferimento all'ora precedente la mezzanotte del giorno in questione. Valori maggiori di 23 fanno riferimento all'ora appropriata nel/i giorno/i successivo/i.

minute

Il numero dei minuti relativo all'inizio dell'hour. Valori negativi fanno riferimento ai minuti dell'ora precedente. Valori maggiori di 59 fanno riferimento ai minuti appropriati nell'/nelle ora/e successiva/e.

second

Il numero dei secondi relativo all'inizio del minute. Valori negativi fanno riferimento ai secondi del minuto precedente. Valori maggiori di 59 fanno riferimento ai secondi appropriati nel/i minuto/i successivo/i.

month

Il numero del mese relativo alla fine dell'anno precedente. I valori da 1 a 12 fanno riferimento ai normali mesi del calendario dell'anno in questione. Valori inferiori a 1 (inclusi valori negativi) fanno riferimento ai mesi dell'anno precedente in ordine inverso, quindi 0 è dicembre, -1 è novembre, ecc. Valori maggiori di 12 fanno riferimento al mese appropriato nell'/negli anno/i successivo/i.

day

Il numero del giorno relativo alla fine del mese precedente. I valori da 1 a 28, 29, 30 o 31 (a seconda del mese) fanno riferimento ai giorni normali nel mese pertinente. Valori inferiori a 1 (inclusi valori negativi) fanno riferimento ai giorni del mese precedente, quindi 0 è l'ultimo giorno del mese precedente, -1 è il giorno prima, ecc. Valori maggiori del numero di giorni nel mese pertinente fanno riferimento al giorno appropriato nel/i mese/i successivo/i.

year

Il numero dell'anno può essere un valore a due o quattro cifre, con valori tra 0-69 mappati su 2000-2069 e 70-100 su 1970-2000. Nei sistemi in cui time_t è un intero con segno a 32 bit, come nella maggior parte dei casi oggi, l'intervallo valido per year è compreso tra il 1901 e il 2038.

Valori restituiti

mktime() restituisce il timestamp Unix degli argomenti forniti, oppure false se il timestamp non rientra in un intero PHP.

Log delle modifiche

Versione Descrizione
8.0.0 hour non è più opzionale. Se hai bisogno di un timestamp Unix, usa time().
8.0.0 minute, second, month, day e year ora possono essere null.

Esempi

Example #1 Esempio di base di mktime()

<?php
// Imposta il fuso orario predefinito da utilizzare.
date_default_timezone_set('UTC');

// Stampa: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000)) . "\n";

// Stampa qualcosa come: 2006-04-05T01:02:03+00:00
echo date('c', mktime(1, 2, 3, 4, 5, 2006)) . "\n";

Il precedente esempio visualizzerà qualcosa simile a:

July 1, 2000 is on a Saturday
2006-04-05T01:02:03+00:00

Example #2 Esempio di mktime()

mktime() è utile per eseguire calcoli e validazioni sulle date poiché calcola automaticamente il valore corretto per input fuori intervallo. Per esempio, ognuna delle seguenti righe produce la stringa "Jan-01-1998".

<?php
date_default_timezone_set
('America/New_York');

echo
date("c", mktime(0, 0, 0, 12, 32, 1997)) . "\n";
echo
date("c", mktime(0, 0, 0, 13, 1, 1997)) . "\n";
echo
date("c", mktime(0, 0, 0, 1, 1, 1998)) . "\n";
echo
date("c", mktime(0, 0, 0, 1, 1, 98)) . "\n";

Il precedente esempio visualizzerà qualcosa simile a:

1998-01-01T00:00:00-05:00
1998-01-01T00:00:00-05:00
1998-01-01T00:00:00-05:00
1998-01-01T00:00:00-05:00

Example #3 Uso di mktime per trovare date relative

<?php
date_default_timezone_set
('Asia/Tokyo');

$tomorrow = mktime(0, 0, 0, date("m") , date("d")+1, date("Y"));
print
date('c', $tomorrow) . "\n";

$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
print
date('c', $lastmonth) . "\n";

$nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y")+1) . "\n";
print
date('c', $nextyear) . "\n";

Il precedente esempio visualizzerà qualcosa simile a:

2025-09-30T00:00:00+09:00
2025-08-29T00:00:00+09:00
2026-09-29T00:00:00+09:00

Nota:

Questo può essere più affidabile rispetto ad aggiungere o sottrarre semplicemente il numero di secondi in un giorno o in un mese a un timestamp a causa dell'ora legale.

Example #4 Ultimo giorno di un mese

L'ultimo giorno di un determinato mese può essere espresso come il giorno "0" del mese successivo, non come il giorno -1. Entrambi i seguenti esempi produrranno la stringa "The last day in Feb 2000 is: 29".

<?php

$lastday
= mktime(0, 0, 0, 3, 0, 2000);
echo
'Last day in Feb 2000 is: ', date('d', $lastday) . "\n";

$lastday = mktime(0, 0, 0, 4, -31, 2000);
echo
'Last day in Feb 2000 is: ', date('d', $lastday) . "\n";

Il precedente esempio visualizzerà:

Last day in Feb 2000 is: 29
Last day in Feb 2000 is: 29

Vedere anche:

add a note

User Contributed Notes

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