📅  最后修改于: 2023-12-03 15:01:34.913000             🧑  作者: Mango
Java中有很多类可以用来处理日期和时间,其中最常用的是Date
和Calendar
类。然而,从Java 8开始,Java引入了一组全新的日期和时间API,用于取代旧的Date
和Calendar
类。这些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具有良好的可读性和易用性,并且可以弥补旧的Date
和Calendar
类存在的一些缺陷。我们可以根据自己的需求,选择合适的类进行日期和时间处理。