📜  Java-日期和时间(1)

📅  最后修改于: 2023-12-03 15:01:34.913000             🧑  作者: Mango

Java-日期和时间

Java中有很多类可以用来处理日期和时间,其中最常用的是DateCalendar类。然而,从Java 8开始,Java引入了一组全新的日期和时间API,用于取代旧的DateCalendar类。这些API被称为java.time包。

常用类

下面是java.time包中一些常用的类:

  • LocalDate:表示日期。它的值是不可变的,且不包含时间或时区。
  • LocalTime:表示时间。它的值是不可变的,且不包含日期或时区。
  • LocalDateTime:表示日期和时间。它的值是不可变的,且不包含时区。
  • ZonedDateTime:表示带时区的日期和时间。
  • Duration:表示两个时间之间的时间间隔。
  • Period:表示两个日期之间的时间间隔。
示例代码
创建日期对象
// LocalDate
LocalDate now = LocalDate.now();            // 当前日期
LocalDate date1 = LocalDate.of(2021, 8, 18); // 指定日期

// LocalTime
LocalTime time1 = LocalTime.now();           // 当前时间
LocalTime time2 = LocalTime.of(16, 45, 15);  // 指定时间

// LocalDateTime
LocalDateTime datetime1 = LocalDateTime.now();                   // 当前日期时间
LocalDateTime datetime2 = LocalDateTime.of(2021, Month.AUGUST, 18, 16, 45, 15); // 指定日期时间

// ZonedDateTime
ZoneId beijingZone = ZoneId.of("Asia/Shanghai");
ZonedDateTime zonedDateTime = ZonedDateTime.now(beijingZone); // 当前日期时间
日期格式化
// 格式化日期为字符串
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = now.format(formatter);
System.out.println("Formatted date: " + formattedDate);

// 将字符串解析为日期
LocalDate parsedDate = LocalDate.parse(formattedDate, formatter);
System.out.println("Parsed date: " + parsedDate);
时间计算
// 计算两个日期之间的天数(不包括结束日期)
LocalDate startDate = LocalDate.of(2021, 8, 1);
LocalDate endDate = LocalDate.of(2021, 8, 18);
long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
System.out.println("Days between: " + daysBetween);

// 计算两个时间之间的时间间隔(毫秒数)
Instant startInstant = Instant.now();
Thread.sleep(1000);
Instant endInstant = Instant.now();
long millis = ChronoUnit.MILLIS.between(startInstant, endInstant);
System.out.println("Millis between: " + millis);
总结

Java的新日期和时间API具有良好的可读性和易用性,并且可以弥补旧的DateCalendar类存在的一些缺陷。我们可以根据自己的需求,选择合适的类进行日期和时间处理。