W3docs

jddayofweek()

Aprende cómo usar jddayofweek() en PHP para obtener el día de la semana a partir de un número de día juliano, con ejemplos y modos explicados.

La función jddayofweek() de PHP devuelve el día de la semana para un conteo de días julianos dado. Esta página explica qué es un número de día juliano, el valor exacto que devuelve cada mode (la parte que más confunde) y un ejemplo ejecutable y verificado.

¿Qué es un número de día juliano?

Un número de día juliano (JDN) es un entero único que cuenta el número de días transcurridos desde el mediodía del 1 de enero de 4713 a. C. (la época del período juliano). Al ser un contador continuo sin meses, años ni reglas de calendario, es la "moneda" común utilizada para convertir fechas entre distintos sistemas de calendario y para realizar aritmética de fechas en astronomía e historia.

Rara vez se escribe un número de día juliano a mano. En su lugar, se obtiene a partir de una fecha de calendario usando un convertidor como cal_to_jd() (y se convierte de vuelta con jdtogregorian()). Luego, jddayofweek() indica en qué día de la semana cae ese JDN.

El "número de día juliano" que se usa aquí no tiene relación con el calendario juliano (el calendario de la época de César reemplazado por el gregoriano en 1582). Los nombres son similares, pero son conceptos diferentes.

Sintaxis

jddayofweek(int $julian_day, int $mode = CAL_DOW_DAYNO): int|string
  • $julian_day — el número de día juliano a inspeccionar (un entero, por ejemplo, el resultado de cal_to_jd()).
  • $mode — opcional. Selecciona qué devuelve la función. El valor predeterminado es CAL_DOW_DAYNO (0).

El parámetro mode

El mode es la parte de esta función que genera más confusión. Hay tres modos, y el valor predeterminado devuelve un número que comienza en 0 para el domingo, no un rango de 1 a 7 empezando el lunes.

ModoConstanteDevuelveEjemplo para un jueves
0 (predeterminado)CAL_DOW_DAYNOEntero 06, donde 0 = domingo y 6 = sábado4
1CAL_DOW_LONGNombre completo del día de la semana en inglés (string)"Thursday"
2CAL_DOW_SHORTAbreviación de tres letras (string)"Thu"

Utiliza las constantes con nombre (CAL_DOW_LONG, etc.) en lugar de los números directos para mantener el código legible.

Cómo usar jddayofweek() en PHP

Primero convierte la fecha objetivo a un número de día juliano con cal_to_jd(), que recibe el tipo de calendario más enteros separados para mes, día y año (en ese orden). Luego pasa el resultado a jddayofweek() con el modo que desees.

La función jddayofweek() en 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";
?>

Esto imprime:

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

El 2 de marzo de 2023 fue un jueves, por lo que el modo predeterminado devuelve 4 (el domingo es 0, así que el jueves es el índice cuatro), CAL_DOW_LONG devuelve "Thursday" y CAL_DOW_SHORT devuelve "Thu".

Errores comunes

  • El valor predeterminado es basado en domingo, no en lunes. El modo 0 devuelve 0 para el domingo, no 1 para el lunes. Si esperas la numeración ISO-8601 (lunes = 1), añade tu propio desplazamiento o usa DateTime.
  • La extensión de calendario debe estar habilitada. jddayofweek() y cal_to_jd() forman parte de la extensión calendar de PHP. Se incluye en la mayoría de las instalaciones, pero puede estar deshabilitada.
  • Orden incorrecto de argumentos en cal_to_jd(). El orden es (calendar, month, day, year), no (year, month, day). Intercambiar mes y día produce silenciosamente el día de la semana incorrecto.

Conclusión

jddayofweek() mapea un número de día juliano a un día de la semana, ya sea como un índice basado en domingo (CAL_DOW_DAYNO), un nombre completo (CAL_DOW_LONG) o una abreviación (CAL_DOW_SHORT). Combinada con cal_to_jd(), permite determinar con precisión los días de la semana para trabajos de fechas históricas, astronómicas o entre distintos calendarios.

Práctica

Práctica
¿Qué hace la función jddayofweek() en PHP?
¿Qué hace la función jddayofweek() en PHP?
Was this page helpful?