📅  最后修改于: 2023-12-03 15:28:05.964000             🧑  作者: Mango
Java 8中引入了java.time
包,这个包提供了一组全新的日期和时间API,用于替代旧的java.util.Date
和java.util.Calendar
类。java.time
包中的类具有以下优点:
java.time
包中主要有以下几个日期时间类:
Instant
:时间线上的一个瞬间,以1970年1月1日午夜开始的秒数表示。LocalDate
:表示一个日期,如2019-12-31。LocalTime
:表示一个时间,如20:30:00。LocalDateTime
:表示日期时间,如2019-12-31T20:30:00。ZonedDateTime
:表示带有时区的日期时间。这些类都是不可变的,因此线程安全。
java.time
包中提供了许多日期时间操作的方法。例如:
plusHours(long hours)
:增加指定小时数。minusDays(long days)
:减少指定天数。withYear(int year)
:将年份设为指定值。isAfter(ChronoLocalDateTime<?> other)
:判断是否在另一个日期时间之后。此外,还有一些有用的方法,例如:
now()
:获取当前时间。parse(CharSequence text, DateTimeFormatter formatter)
:将字符串解析为日期时间。ZonedDateTime
类支持时区操作,可以使用ZoneId
类来表示时区。例如:
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));
java.time
包中的日期时间格式化类是DateTimeFormatter
。我们可以使用它来将日期时间对象格式化为指定的字符串,也可以将字符串解析为日期时间对象。例如:
LocalDateTime dateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
String formattedDateTime = dateTime.format(formatter);
System.out.println(formattedDateTime); // 输出:2021/06/23 15:23:45
String dateString = "2021/06/23 15:23:45";
LocalDateTime parsedDateTime = LocalDateTime.parse(dateString, formatter);
System.out.println(parsedDateTime); // 输出:2021-06-23T15:23:45
java.time
包提供了一组全新的、功能更加强大且线程安全的日期时间API,可以很好地满足我们对日期时间的各种需求,强烈建议在Java 8及以上版本中使用。