idate()
idate() è una funzione PHP integrata che estrae informazioni specifiche da un timestamp Unix e le restituisce come intero.
idate() è una funzione PHP integrata che estrae un singolo elemento di informazione sulla data o sull'ora da un timestamp Unix e lo restituisce come intero. Il nome sta per integer date. A differenza di date(), che costruisce una stringa formattata da uno o più caratteri di formato, idate() accetta esattamente un carattere di formato e restituisce un numero semplice su cui è possibile eseguire operazioni matematiche immediatamente.
Questa pagina illustra la sintassi, i caratteri di formato supportati da idate(), esempi eseguibili, le differenze rispetto a date() e le insidie da tenere a mente.
Sintassi
idate(string $format, ?int $timestamp = null): int|false$format— un singolo carattere di formato (vedi la tabella seguente). Passare una stringa più lunga di un carattere genera un avviso e restituiscefalse.$timestamp— un timestamp Unix opzionale (secondi dal 1° gennaio 1970, UTC). Se omesso, vengono utilizzate la data e l'ora correnti.
Restituisce un intero, oppure false in caso di errore.
Caratteri di formato
idate() supporta un sottoinsieme dei caratteri di formato di date() — solo quelli che producono un valore numerico.
| Codice | Restituisce | Esempio |
|---|---|---|
Y | Anno a quattro cifre | 2023 |
y | Anno a due cifre | 23 |
m | Numero del mese (1–12) | 3 |
n | Numero del mese (uguale a m) | 3 |
d | Giorno del mese (1–31) | 5 |
j | Giorno del mese (uguale a d) | 5 |
H | Ora, formato 24 ore (0–23) | 17 |
G | Ora, formato 24 ore (uguale a H) | 17 |
i | Minuti (0–59) | 30 |
s | Secondi (0–59) | 45 |
N | Giorno della settimana ISO (1 = lunedì … 7 = domenica) | 7 |
w | Giorno della settimana (0 = domenica … 6 = sabato) | 0 |
z | Giorno dell'anno, base zero (0–365) | 63 |
t | Numero di giorni nel mese dato | 31 |
L | Anno bisestile? 1 se sì, 0 se no | 0 |
U | Il timestamp Unix stesso | 1678037445 |
Importante:
idate()restituisce un numero, non una stringa con zero iniziale.idate('m')per marzo restituisce l'intero3, non"03". Se hai bisogno dello zero iniziale, usadate('m'), che restituisce la stringa"03".
Esempio di base
<?php
// March 5, 2023, 17:30:45
$timestamp = mktime(17, 30, 45, 3, 5, 2023);
echo idate('Y', $timestamp) . "\n"; // 2023
echo idate('m', $timestamp) . "\n"; // 3
echo idate('d', $timestamp) . "\n"; // 5
echo idate('H', $timestamp) . "\n"; // 17
echo idate('i', $timestamp) . "\n"; // 30
echo idate('s', $timestamp) . "\n"; // 45Poiché il valore restituito è un intero, puoi usarlo direttamente in operazioni aritmetiche e confronti:
<?php
$timestamp = mktime(17, 30, 45, 3, 5, 2023);
if (idate('N', $timestamp) >= 6) {
echo "It's the weekend.\n";
} else {
echo "It's a weekday.\n";
}
// March 5, 2023 was a Sunday (N = 7), so this prints:
// It's the weekend.Utilizzare l'ora corrente
Quando si omette il secondo argomento, idate() legge la data e l'ora correnti, il che lo rende comodo per verifiche rapide:
<?php
$currentYear = idate('Y');
echo "The current year is {$currentYear}.\n";
// Detect a leap year
echo idate('L') ? "This year is a leap year.\n" : "This year is not a leap year.\n";idate() vs. date()
idate() | date() | |
|---|---|---|
| Lunghezza del formato | Un solo carattere | Qualsiasi numero di caratteri |
| Tipo restituito | int (o false) | string |
| Zeri iniziali | Mai (3) | Sì, dove definito ("03") |
| Caso d'uso | Si ha bisogno di un numero per calcoli/confronti | Si ha bisogno di una stringa formattata e leggibile |
<?php
$timestamp = mktime(9, 5, 0, 4, 2, 2024);
echo date('m', $timestamp) . "\n"; // "04" (string, zero-padded)
echo idate('m', $timestamp) . "\n"; // 4 (integer, no padding)Quando usarlo
Ricorri a idate() quando vuoi un componente di data/ora come numero — ad esempio per costruire un contatore, confrontare due valori, indicizzare un array o fornire il risultato a ulteriori calcoli. Se il tuo obiettivo è visualizzare una data o un'ora formattata, usa date() (oppure strtotime() per analizzare prima un testo in un timestamp).
Insidie
- Nessun formato a più caratteri.
idate('Y-m-d')non funziona — genera un avviso e restituiscefalse. Chiamaidate()una volta per ogni componente, oppure usadate(). - Nessuno zero iniziale. Non affidarti a
idate()per output a larghezza fissa; elimina sempre la spaziatura. falsesembra0. In caso di erroreidate()restituiscefalse, che è debolmente uguale a0. Usa un controllo rigoroso (=== false) se un vero0(come la domenica daw) è un risultato valido.
Funzioni correlate
date()— formatta un timestamp come stringa.mktime()— costruisce un timestamp Unix da componenti di data/ora.strtotime()— analizza una stringa di data in inglese in un timestamp.time()— ottiene il timestamp Unix corrente.