tl; dr
LocalDate.now(ZoneId.of(“America/Montreal”)).getDayOfYear()
terminología “días Julian”
El término “días Julian” a veces se utiliza libremente para significar la ordinal días del año, o Ordinal date, lo que significa un número de 1 a 365 o 366 (leap years). El 1 de enero es 1
, el 2 de enero es 2
, el 31 de diciembre es 365
(o 366
en años bisiestos).
Este uso sueltos (indebido) de Julian
probablemente proviene de los otros campos de la use in astronomy y seguimiento de fechas como un recuento continuo de días desde el mediodía GMT del 1 de enero de 4713 aC (en la Julian calendar). Hoy en día, la fecha juliana se acerca a los dos millones y medio, 2,457,576
en la actualidad.
java.time
El marco java.time incorporado en Java 8 y posterior proporciona una instalación fácil de obtener el día de año.
La clase LocalDate
representa un valor de fecha solamente sin hora del día y sin zona horaria. Puede interrogar para el día del año.
LocalDate localDate = LocalDate.of (2010 , Month.JUNE , 8);
int dayOfYear = localDate.getDayOfYear();
Volcar a la consola. Los resultados muestran que el 8 de junio de 2010 es de hecho el día # 159.
System.out.println ("localDate: " + localDate + " | dayOfYear: " + dayOfYear);
LocalDate: 2010-06-08 | dayOfYear: 159
Una zona horaria es crucial para determinar una fecha. Para cualquier momento dado, la fecha varía alrededor del mundo por zona. Por ejemplo, unos minutos después de la medianoche en París, Francia es un nuevo día cuando todavía está "ayer" en Montreal Québec.
ZoneId z = ZoneId.of(“America/Montreal”);
LocalDate today = LocalDate.now(z);
int dayOfYear = today.getDayOfYear();
Yendo en la otra dirección, de un número a una fecha.
LocalDate ld = Year.of(2017).atDay(159) ;
Hola Marcos, También me gustaría saber esto, porque quiero usarlo en un programa de Astronomie estoy trabajando en y yo prefiero que ver directamente que en Java y no de codificación yo mismo :) –
Este día del año (1-366) se conoce más correctamente como [* Ordinal Date *] (https://en.wikipedia.org/wiki/Ordinal_date). El uso aquí de "Julian" es común pero, hasta donde yo sé, es incorrecto. Aparentemente una combinación con el [* Julian Day *] (https://en.wikipedia.org/wiki/Julian_day) que es el número entero asignado a un día solar completo en el recuento de días julianos a partir del mediodía. Hora universal, con día juliano. número 0 asignado al día que comienza al mediodía del 1 de enero de 4713 aC, calendario juliano proléptico (24 de noviembre de 4714 aC, en el calendario gregoriano proléptico). Ej: 2000-01-01T12: 00: 00Z = 2,451,545. –