返回 1. 如何将一个字符串转换为
2. 如何将一个
JAVA8时间工具类转换
后端
2024-02-08 10:53:36
JAVA8时间工具类转换
==========
在JDK1.8以前时间工具类一般都是Date
、Calendar
、SimpleDateFormat
,这些类对于时间的操作不够友好。从JDK1.8开始引入了新的时间类,新旧时间类进行了拆分,新类使用起来非常方便。下面列出了Java 8中常用的时间类:
LocalDateTime
:表示一个日期和时间,包括年月日、时分秒、毫秒和纳秒。LocalDate
:表示一个日期,包括年月日。LocalTime
:表示一个时间,包括时分秒、毫秒和纳秒。Instant
:表示一个时间点,从1970年1月1日午夜开始的毫秒数。Duration
:表示两个时间点之间的持续时间。Period
:表示两个日期之间的持续时间。ChronoUnit
:枚举类,提供了一些常用的时间单位,如DAYS
、HOURS
、MINUTES
、SECONDS
、MILLIS
等。
新旧时间类转换
==========
旧时间类与新时间类的转换也非常方便,可以使用toInstant()
方法将旧时间类转换为Instant
,然后使用LocalDateTime
、LocalDate
或LocalTime
的ofInstant()
方法将Instant
转换为新时间类。例如:
// 将Date转换为LocalDateTime
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
// 将Calendar转换为LocalDate
LocalDate localDate = LocalDate.ofInstant(calendar.toInstant(), ZoneId.systemDefault());
// 将SimpleDateFormat转换为LocalTime
LocalTime localTime = LocalTime.ofInstant(simpleDateFormat.parse("2023-08-29 12:34:56").toInstant(), ZoneId.systemDefault());
时间操作
==========
新时间类提供了很多方便的时间操作方法,例如:
plusDays()
、plusWeeks()
、plusMonths()
、plusYears()
:将一个日期加上指定的天数、周数、月数或年数。minusDays()
、minusWeeks()
、minusMonths()
、minusYears()
:将一个日期减去指定的天数、周数、月数或年数。withDayOfMonth()
、withMonth()
、withYear()
:设置一个日期的日、月或年。isBefore()
、isAfter()
:比较两个日期的大小。isEqual()
:判断两个日期是否相等。
常见问题
==========
1. 如何将一个字符串转换为LocalDateTime
?
可以使用LocalDateTime.parse()
方法,该方法接受一个字符串和一个格式化器。例如:
String dateString = "2023-08-29 12:34:56";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.parse(dateString, formatter);
2. 如何将一个LocalDateTime
转换为字符串?
可以使用LocalDateTime.format()
方法,该方法接受一个格式化器。例如:
LocalDateTime localDateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateString = localDateTime.format(formatter);
3. 如何计算两个日期之间的差值?
可以使用Duration.between()
方法,该方法接受两个时间点。例如:
LocalDateTime startDateTime = LocalDateTime.of(2023, 8, 29, 12, 34, 56);
LocalDateTime endDateTime = LocalDateTime.of(2023, 8, 29, 13, 34, 56);
Duration duration = Duration.between(startDateTime, endDateTime);
long days = duration.toDays(); // 1
long hours = duration.toHours(); // 1
long minutes = duration.toMinutes(); // 60
long seconds = duration.getSeconds(); // 60