Cómo manejar felizmente fechas y horas en Java 8
Para manejar felizmente fechas y horas, es suficiente que haya actualizado a java8, porque Java 8 tiene nuevas interfaces LocalDate y LocalTime para manejar fechas y horas.
Veamos primero cómo usar el nuevo LocalDate: ///? Obtener la fecha actual:
LocalDate?today?=?LocalDate.now();?//? ->? 2014-12-24
//?Obtener la fecha según el año, mes y día, diciembre es 12:
LocalDate?crischristmas?=?LocalDate.of (2014,?12,? 25);?//?->?2014-12-25
//?Según la cadena:
LocalDate?endOfFeb?=? LocalDate.parse("2014- 02-28");?//?Verifique estrictamente de acuerdo con ISO?yyyy-MM-dd Incluso escribir 02 como 2 no funcionará. Por supuesto, existe un método sobrecargado que le permite. para definir el formato usted mismo
LocalDate.parse("2014 -02-29");?//?No se puede pasar la fecha no válida: DateTimeParseException:?Invalid?date
Fecha A menudo se encuentran conversiones, como por ejemplo: //Obtenga el primer día de este mes:
LocalDate?firstDayOfThisMonth?=?today.with(TemporalAdjusters.firstDayOfMonth());?//?2014-12 -01
//?Obtener el segundo día de este mes:
LocalDate?segundoDíaDeEsteMes?=?today.withDayOfMonth(2);?//?2014-12-02
//?Obtén el último día del mes, ya no es necesario calcular 28, 29, 30 o 31:
LocalDate?lastDayOfThisMonth?=?today.with(TemporalAdjusters.lastDayOfMonth ());?/?//?2014-12-31
//?Eliminar un día:
LocalDate?firstDayOf2015?=?lastDayOfThisMonth.plusDays(1);?// ?Se convierte en 2015-01-01
//?Tome el primer día de enero de 2015. Un lunes, usar Calendar para este cálculo costará muchas células cerebrales:
¿Fecha local? firstMondayOf2015?=?LocalDate.parse("2015-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY ));?/?//?2015-01-05
Hora local
LocalTime solo contiene tiempo. ¿Cómo podríamos usar java.util.Date para expresar solo el tiempo en el pasado? La respuesta es fingir ignorar la fecha.
LocalTime contiene milisegundos:
LocalTime?now?=?LocalTime.now();?//?11:09:09.240
Quizás quieras claro Número de milisegundos: LocalTime?now?=?LocalTime.now().withNano(0));?/?//?11:09:09
Construir el tiempo también es muy sencillo: LocalTime?zero? =?LocalTime .of(0,?0,?0);?/?//?00:00:00
LocalTime?mid?=?LocalTime.parse("12:00:00"); ?// ?12:00:00
La hora también se reconoce según el formato ISO, pero se pueden reconocer los siguientes tres formatos:
12:00
12:01:02
12:01:02.345
JDBC
La última asignación de JDBC asociará el tipo de fecha de la base de datos con el nuevo Java 8 tipo: SQL?->? Java
--------------------------
fecha? ->?LocalDate
hora?->?LocalTime
marca de tiempo?->?LocalDateTime
nunca más se asigna a java.util.Date donde alguna parte de la fecha u hora es 0 situación.