W3docs

jddayofweek()

La funzione jddayofweek() di PHP restituisce il giorno della settimana per un dato numero giuliano. Scopri i modi, la sintassi e un esempio pratico.

La funzione jddayofweek() di PHP restituisce il giorno della settimana per un dato conteggio di giorni giuliani. Questa pagina spiega cos'è un numero del giorno giuliano, il valore esatto restituito da ogni mode (la parte che confonde di più) e un esempio eseguibile e verificato.

Cos'è un numero del giorno giuliano?

Un numero del giorno giuliano (JDN) è un singolo intero che conta il numero di giorni trascorsi dal mezzogiorno del 1° gennaio 4713 a.C. (l'epoca del periodo giuliano). Essendo un semplice contatore continuo, senza mesi, anni o regole di calendario, è la "valuta" comune usata per convertire le date tra diversi sistemi di calendario e per fare calcoli aritmetici sulle date in astronomia e storia.

Raramente si digita un numero del giorno giuliano a mano. Lo si produce invece da una data del calendario usando un convertitore come cal_to_jd() (e si converte nuovamente con jdtogregorian()). jddayofweek() indica poi quale giorno della settimana corrisponde a quel JDN.

Il "numero del giorno giuliano" utilizzato qui non è correlato al calendario giuliano (il calendario dell'era di Cesare sostituito dal calendario gregoriano nel 1582). I nomi sono simili ma si tratta di concetti diversi.

Sintassi

jddayofweek(int $julian_day, int $mode = CAL_DOW_DAYNO): int|string
  • $julian_day — il numero del giorno giuliano da esaminare (un intero, ad es. il risultato di cal_to_jd()).
  • $mode — facoltativo. Seleziona cosa restituisce la funzione. Il valore predefinito è CAL_DOW_DAYNO (0).

Il parametro mode

Il parametro mode è la parte di questa funzione che crea più confusione. Esistono tre modalità, e il valore predefinito restituisce un numero che inizia da 0 per domenica — non un intervallo lunedì-primo da 1 a 7.

ModeCostanteRestituisceEsempio per un giovedì
0 (predefinito)CAL_DOW_DAYNOIntero da 0 a 6, dove 0 = domenica e 6 = sabato4
1CAL_DOW_LONGNome completo del giorno della settimana in inglese (string)"Thursday"
2CAL_DOW_SHORTAbbreviazione di tre lettere (string)"Thu"

Usa le costanti con nome (CAL_DOW_LONG, ecc.) anziché i numeri grezzi per mantenere il codice leggibile.

Come usare jddayofweek() in PHP

Prima converti la data desiderata in un numero del giorno giuliano con cal_to_jd(), che accetta il tipo di calendario più interi separati per mese, giorno e anno (in quest'ordine). Poi passa il risultato a jddayofweek() con la modalità che desideri.

La funzione jddayofweek() in PHP

<?php
// Convert the Gregorian date 2023-03-02 to a Julian day number.
// Argument order is: calendar, month, day, year.
$julianDay = cal_to_jd(CAL_GREGORIAN, 3, 2, 2023);

// Mode 0 (default): integer, 0 = Sunday ... 6 = Saturday
echo "Day number: " . jddayofweek($julianDay, CAL_DOW_DAYNO) . "\n";

// Mode 1: full weekday name
echo "Full name:  " . jddayofweek($julianDay, CAL_DOW_LONG) . "\n";

// Mode 2: abbreviated weekday name
echo "Short name: " . jddayofweek($julianDay, CAL_DOW_SHORT) . "\n";
?>

Questo stampa:

Day number: 4
Full name:  Thursday
Short name: Thu

Il 2 marzo 2023 era un giovedì, quindi la modalità predefinita restituisce 4 (domenica è 0, quindi giovedì è il quarto indice), CAL_DOW_LONG restituisce "Thursday" e CAL_DOW_SHORT restituisce "Thu".

Errori comuni

  • Il valore predefinito è basato su domenica, non su lunedì. La modalità 0 restituisce 0 per domenica, non 1 per lunedì. Se ti aspetti la numerazione ISO-8601 (lunedì = 1), aggiungi il tuo offset o usa DateTime.
  • L'estensione calendar deve essere abilitata. jddayofweek() e cal_to_jd() si trovano nell'estensione calendar di PHP. È inclusa nella maggior parte delle build, ma può essere disabilitata.
  • Ordine degli argomenti errato in cal_to_jd(). L'ordine è (calendar, month, day, year), non (year, month, day). Invertire mese e giorno produce silenziosamente il giorno della settimana sbagliato.

Conclusione

jddayofweek() mappa un numero del giorno giuliano su un giorno della settimana, come indice basato su domenica (CAL_DOW_DAYNO), nome completo (CAL_DOW_LONG) o abbreviazione (CAL_DOW_SHORT). Combinata con cal_to_jd(), permette di determinare con precisione i giorni della settimana per lavori storici, astronomici o di conversione tra calendari diversi.

Esercizio

Pratica
Cosa fa la funzione jddayofweek() in PHP?
Cosa fa la funzione jddayofweek() in PHP?
Was this page helpful?