Tabla de contenido
1.9 Fecha y hora de generación
2.1 Convertir entre Instant y Date
2.2 Conversión de LocalDateTime y Date
2.3 Salida con formato de fecha y hora
2.4 Comparar dos fechas u horas
Aquellos que han usado java.util.Date y java.sql.Date sentirán que estos dos paquetes de API de fecha están diseñados para ser demasiado hostiles y antihumanos. como:
- Qué java.util.Date es un tipo de variable;
- SimpleDateFormatter no es seguro para subprocesos;
- Incluso el mes java.util.Date comienza en 0, enero es 0, diciembre es 11 y así sucesivamente.
Para solucionar estos problemas, apareció el paquete java.time de Java 8. Todas las clases de este paquete son tipos inmutables y seguras para subprocesos.
Puede encontrar que muchas API de este paquete son similares a JodaTime, porque el diseño del paquete de tiempo de Java 8 se refiere al diseño de JodaTime.
En Java 8,java.time 包如下所示:
Reloj : Reloj, por ejemplo, para obtener la hora actual en Beijing, China.
Instantáneo : marca de tiempo.
Duración : Duración, utilizada para calcular la diferencia horaria.
LocalDate : solo contiene la fecha, por ejemplo: 2021-01-17.
LocalTime : solo contiene la hora, por ejemplo: 14:15:10 .
LocalDateTime : contiene la fecha y la hora, por ejemplo: 2021-01-170 14:15:10.
Periodo : periodo de tiempo que se utiliza para calcular la diferencia horaria.
ZoneOffset : Desplazamiento de zona horaria, por ejemplo: +8: 00.
ZonedDateTime : Hora con zona horaria.
Otras son clases muy sencillas, más familiares.
Una operación básica
1.1 Fecha de generación
//当前日期
LocalDate localDate = LocalDate.now();
//指定日期
LocalDate localDate = LocalDate.of(2021, 01, 17);
1.2 Tiempo de generación
//当前时间
LocalTime localTime1 = LocalTime.now();
//指定时间
LocalTime localTime2= LocalTime.of(15, 11, 15);
1.3 Año de generación
//今年
int now = LocalDate.now().getYear()
//明年
int after = LocalDate.now().plusYears(1).getYear();
//去年
int before = LocalDate.now().minusYears(1).getYear();
1.4 Mes de generación
//这个月
int now = LocalDate.now().getMonthValue()
//下个月
int after = LocalDate.now().plusMonths(1).getMonthValue();
//上个月
int before = LocalDate.now().minusMonths(1).getMonthValue();
1.5 Fecha de generación
//今天
int now = LocalDate.now().getDayOfMonth();
//明天
int after = LocalDate.now().plusDays(1).getDayOfMonth();
//昨天
int before = LocalDate.now().minusDays(1).getDayOfMonth();
1.6 Al generar
//这个时辰
int now = LocalTime.now().getHour();
//下个时辰
int after = LocalTime.now().plusHours(1).getHour();
//上个时辰
int before = LocalTime.now().minusHours(1).getHour();
1.7 Generado
//这一分钟
int now = LocalTime.now().getMinute();
//下一分钟
int after = LocalTime.now().plusMinutes(1).getMinute();
//上一分钟
int before = LocalTime.now().minusMinutes(1).getMinute();
1.8 Segundos generados
//这一秒
int now = LocalTime.now().getSecond();
//下一秒
int after = LocalTime.now().plusSeconds(1).getSecond();
//上一秒
int before = LocalTime.now().minusSeconds(1).getSecond();
1.9 Fecha y hora de generación
LocalDateTime localDateTime = LocalDateTime.now();
Dos aplicaciones diarias
2.1 Convertir entre Instant y Date
2.1.1 Instantánea 转 Fecha
Instant instant = Instant.now();
Date date = Date.from(instant);
2.1.2 Fecha 转 Instantáneo
Date date = new Date();
Instant instant = date.toInstant();
2.2 Conversión de LocalDateTime y Date
2.2.1 LocalDateTime 转 Fecha
LocalDateTime localDateTime = LocalDateTime.now();
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
Date date = Date.from(instant);
2.2.2 Fecha 转 LocalDateTime
Date date = new Date();
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
2.3 Salida con formato de fecha y hora
2.3.1 Salida formateada LocalDateTime
LocalDateTime localDateTime = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String string = dateTimeFormatter.format(localDateTime);
2.3.2 Salida formateada LocalDate
LocalDate data=LocalDate.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy:MM:dd");
String string = dateTimeFormatter.format(data);
2.4 Comparar dos fechas u horas
2.4.1 Comparación antes y después de la fecha
LocalDate today = LocalDate.now();
LocalDate speDay = LocalDate.of(2021,01,18);
boolean isAfter = today.isAfter(speDay);
2.4.2 Comparación de tiempo antes y después
LocalTime today = LocalTime.now();
LocalTime speDay = LocalTime.of(15,01,18);
boolean isAfter = today.isAfter(speDay);
2.4.3 Comparación de LocalDateTime
LocalDateTime begin = LocalDateTime.of(2021,01, 17, 15, 13, 14);
LocalDateTime end = LocalDateTime.of(2021,01, 18, 15, 13, 14);
Duration duration = Duration.between(begin, end);
long days = duration.toDays();
long hours = duration.toHours();
long minutes = duration.toMinutes();
//。。。。。。
2.4.4 Comparación de LocalDate
LocalDate begin = LocalDate.of(2021,01, 17);
LocalDate end = LocalDate.of(2021,01, 18);
Period period = Period.between(begin, end);
int months = period.getMonths();
int days = period.getDays();