tl; dr
LocalDate.now(ZoneId.of(“America/Montreal”)).getDayOfYear()
terminologia “giorno Giuliano”
Il termine “giorno giuliano” è talvolta usato impropriamente per indicare il ordinal giorno dell'anno, o Ordinal date, il che significa un numero da 1 a 365 o 366 (leap years). 1 gennaio è 1
, 2 gennaio è 2
, il 31 dicembre è 365
(o 366
negli anni bisestili).
Questo sciolti (corretto) utilizzo di Julian
deriva probabilmente dalle altre use in astronomy e campi di monitoraggio di date come un conteggio continuo di giorni da mezzogiorno Universal Time il 1 ° gennaio, 4713 aC (sul Julian calendar). Al giorno d'oggi la data giuliana si avvicina a due milioni e mezzo, 2,457,576
oggi.
java.time
Il quadro java.time integrato in Java 8 e versioni successive fornisce una struttura facile da ottenere il giorno d'anno.
La classe LocalDate
rappresenta un valore di sola data senza ora del giorno e senza fuso orario. Puoi interrogare per il giorno dell'anno.
LocalDate localDate = LocalDate.of (2010 , Month.JUNE , 8);
int dayOfYear = localDate.getDayOfYear();
Discarica per consolle. I risultati mostrano che 8 giugno 2010 è infatti il giorno # 159.
System.out.println ("localDate: " + localDate + " | dayOfYear: " + dayOfYear);
localDate: 2010-06-08 | dayOfYear: 159
Un fuso orario è fondamentale per determinare una data. Per un dato momento, la data varia in tutto il mondo per zona. Ad esempio, pochi minuti dopo la mezzanotte a Parigi, la Francia è un nuovo giorno mentre è ancora "ieri" a Montréal Québec.
ZoneId z = ZoneId.of(“America/Montreal”);
LocalDate today = LocalDate.now(z);
int dayOfYear = today.getDayOfYear();
In direzione opposta, da un numero a una data.
LocalDate ld = Year.of(2017).atDay(159) ;
Ehi Mark, mi piacerebbe anche sapere questo, perché voglio usarlo in un programma di astronomia su cui sto lavorando e io preferisco fare direttamente che in java e non codifica io stesso :) –
Questo giorno dell'anno (1-366) più correttamente noto come [* Data ordinale *] (https://en.wikipedia.org/wiki/Ordinal_date). L'uso qui di "Julian" è comune ma, per quanto ne so, non è corretto. Apparentemente una fusione con il [* Julian Day *] (https://en.wikipedia.org/wiki/Julian_day) che è il numero intero assegnato a un intero giorno solare nel conteggio del giorno giuliano a partire da mezzogiorno all'ora universale, con il giorno di Julian numero 0 assegnato al giorno a partire da mezzogiorno del 1 gennaio, 4713 aC, calendario prolittico giuliano (24 novembre 4714 aC, nel calendario gregoriano prolettico). Es: 2000-01-01T12: 00: 00Z = 2.451.545. –