He intentado lo siguiente en vano:¿Cómo puedo obtener el número de días en un año usando JodaTime?
new Period(Years.ONE).getDays();
new Period(1, 0, 0, 000).getDays();
La respuesta es, obviamente, quiero 365.
He intentado lo siguiente en vano:¿Cómo puedo obtener el número de días en un año usando JodaTime?
new Period(Years.ONE).getDays();
new Period(1, 0, 0, 000).getDays();
La respuesta es, obviamente, quiero 365.
Si desea que el número real de días en un año determinado:
int year = 2012;
LocalDate ld = new LocalDate(year,1,1);
System.out.println(Days.daysBetween(ld,ld.plusYears(1)).getDays());
Por supuesto, esto devuelve 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 respuesta que desea no es, obviamente, 365
. Es 365
o 366
, no tiene en cuenta los años bisiestos en su ejemplo.
Detectar un año bisiesto y simplemente codificarlo duro con una declaración ternaria sería inaceptable por alguna razón?
final DateTime dt = new DateTime();
final int daysInYear = dt.year().isLeap() ? 366 : 365;
Por supuesto, esto le daría el número de días del año en curso, la forma de obtener el número de días en un año diferente es trivial y un ejercicio para el lector.
nueva DateTime() años() .toInterval(). toDuration(). getStandardDays();
java.time.Year.of(2017).length()
Joda-Time El proyecto, ahora en maintenance mode, informa la migración a los java.time clases.
La clase java.time.Year
puede representar cualquier año en particular.
Year year = Year.of(2017);
Usted puede interrogar para obtener información acerca de ese año, como su longitud en número de días o si es un Leap Year o no.
int countDaysInYear = year.length() ;
boolean isLeapYear = year.isLeap() ; // ISO proleptic calendar system rules.
El marco java.time está incorporado en Java 8 y versiones posteriores. Estas clases suplantan a las viejas y problemáticas clases de fecha y hora legacy, como java.util.Date
, Calendar
, & SimpleDateFormat
.
El proyecto Joda-Time, ahora en maintenance mode, recomienda la migración a las clases java.time.
Para obtener más información, consulte el Oracle Tutorial. Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310.
¿Dónde obtener las clases java.time?
El proyecto se extiende ThreeTen-Extra java.time con clases adicionales. Este proyecto es un terreno de prueba para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval
, YearWeek
, YearQuarter
y more.
Esto también debería funcionar: '(new LocalDate (year, 12, 31)). GetDayOfYear();' – jpstrube