ho provato la seguente senza alcun risultato:Come posso ottenere il numero di giorni in un anno usando JodaTime?
new Period(Years.ONE).getDays();
new Period(1, 0, 0, 000).getDays();
La risposta che voglio è ovviamente 365.
ho provato la seguente senza alcun risultato:Come posso ottenere il numero di giorni in un anno usando JodaTime?
new Period(Years.ONE).getDays();
new Period(1, 0, 0, 000).getDays();
La risposta che voglio è ovviamente 365.
Se si desidera che il numero effettivo di giorni per un determinato anno:
int year = 2012;
LocalDate ld = new LocalDate(year,1,1);
System.out.println(Days.daysBetween(ld,ld.plusYears(1)).getDays());
Naturalmente, questo restituisce 365 o 366 ... normalmente:.
int year = 1582;
LocalDate ld = new LocalDate(year,1,1,GJChronology.getInstance());
System.out.println(Days.daysBetween(ld,ld.plusYears(1)).getDays());
// year 1582 had 355 days
La risposta desiderata non è ovviamente 365
. È 365
o 366
, non si tiene conto degli anni bisestili nell'esempio.
Rilevare un anno bisestile e limitarsi a codificarlo con una dichiarazione ternaria sarebbe inaccettabile per qualche motivo?
final DateTime dt = new DateTime();
final int daysInYear = dt.year().isLeap() ? 366 : 365;
Naturalmente questo darebbe il numero di giorni nell'anno in corso, come ottenere il numero di giorni in un anno diverso è banale e un esercizio per il lettore.
nuovo DateTime() l'anno() .toInterval() toDuration() getStandardDays()..;
java.time.Year.of(2017).length()
Il progetto Joda-Time, ora in maintenance mode, consiglia migrazione ai java.time classi.
La classe java.time.Year
può rappresentare un anno particolare.
Year year = Year.of(2017);
Si può interrogare per informazioni su quello stesso anno, come la sua lunghezza in numero di giorni o se un Leap Year o no.
int countDaysInYear = year.length() ;
boolean isLeapYear = year.isLeap() ; // ISO proleptic calendar system rules.
Il quadro java.time è costruito in Java 8 e versioni successive. Queste classi soppiantare classi legacy date-time vecchi fastidiose come java.util.Date
, Calendar
, & SimpleDateFormat
.
Il progetto Joda-Time, ora in maintenance mode, consiglia la migrazione alle classi java.time.
Per ulteriori informazioni, vedere Oracle Tutorial. E cerca Stack Overflow per molti esempi e spiegazioni. La specifica è JSR 310.
Dove ottenere le classi java.time?
Il progetto ThreeTen-Extra java.time prolunga con classi aggiuntive. Questo progetto è un terreno di prova per possibili aggiunte future a java.time. È possibile trovare alcune classi utili come Interval
, YearWeek
, YearQuarter
e more.
Questo dovrebbe funzionare anche: '(nuovo LocalDate (anno, 12, 31)). GetDayOfYear();' – jpstrube