(PHP 4, PHP 5, PHP 7, PHP 8)
mktime — Restituisce il timestamp Unix per una data
$hour,$minute = null,$second = null,$month = null,$day = null,$year = nullRestituisce 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.
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.
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.
monthIl 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.
dayIl 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.
mktime() restituisce il timestamp Unix degli argomenti
forniti, oppure false se il timestamp non rientra in un intero PHP.
| 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.
|
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