Java 8 maneja la hora y la fecha con elegancia

Tabla de contenido

Una operación básica

1.1 Fecha de generación

1.2 Tiempo de generación

1.3 Año de generación

1.4 Mes de generación

1.5 Fecha de generación

1.6 Al generar

1.7 Generado

1.8 Segundos generados

1.9 Fecha y hora de generación

Dos aplicaciones diarias

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();

 

Supongo que te gusta

Origin blog.csdn.net/jack1liu/article/details/112742282
Recomendado
Clasificación