tl; dr
LocalDate.now() // Capture the date-only value current in the JVM’s current default time zone.
.getYear() // Extract the year number from that date.
java.time
Tanto las clases java.util.Date
y java.util.Calendar
son legado, ahora suplantado por el marco java.time incorporado en Java 8 y más tarde.
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 Paris France es un nuevo día mientras aún está "ayer" en Montréal Québec.
Si no se especifica la zona horaria, la JVM aplica implícitamente su zona horaria predeterminada actual. Ese valor predeterminado puede cambiar en cualquier momento, por lo que sus resultados pueden variar. Es mejor especificar su zona horaria deseada/esperada explícitamente como un argumento.
Especifique un proper time zone name en el formato de continent/region
, como America/Montreal
, Africa/Casablanca
, o Pacific/Auckland
. Nunca use la abreviatura de 3-4 letras como EST
o IST
ya que son no zonas horarias verdaderas, no estandarizadas, y ni siquiera únicas (!).
ZoneId z = ZoneId.of("Africa/Tunis") ;
Si desea sólo la fecha sin la hora del día, utilizar LocalDate
. Esta clase carece de información de zona horaria pero puede especificar una zona horaria para determinar la fecha actual.
ZoneId zoneId = ZoneId.of("America/Montreal");
LocalDate localDate = LocalDate.now(zoneId);
Puede obtener las diferentes piezas de información con getYear
, getMonth
, y getDayOfMonth
. ¡Obtendrás el número del año con java.time!
int year = localDate.getYear();
Si desea una fecha-hora en lugar de sólo una fecha, utilizar ZonedDateTime
clase.
ZonedDateTime zdt = ZonedDateTime.now(zoneId) ;
Sobre java.time
El marco java.time está incorporado en Java 8 y versiones posteriores. Estas clases suplantan a las antiguas clases problemáticas de fecha y hora, como java.util.Date
, .Calendar
, & java.text.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.
Gran parte de la funcionalidad java.time se back-portado a Java 6 & Java 7 en ThreeTen-Backport y adaptado además para Android en ThreeTenABP (ver How to use…).
El proyecto ThreeTen-Extra amplía 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.
clase
1 de JodaTime – dnault
la correcta aplicación de una especificación totalmente Bizaare! –
¿Es este el error Y2K? – jumpnett