目录
1.java.time包的简要介绍:
2.方法前缀解释:
3.java.time里面的类:
1.java.time包的简要介绍:
java8之前使用joda-time的很多,java8开始就有了joda改进的java.time包。java.time是 Java8引入的日期和时间 API,提供了一套全新的日期和时间类,以替代旧版的java.util.Date和java.util.Calendar类。
该包优点:使用java.time包可以更方便地进行日期和时间计算、格式化、解析等操作。
2.方法前缀解释:
of: 创建时间日期对象。
例如:LocalDate.of(2021, 10, 1) 创建一个表示 2021 年 10 月 1 日的 LocalDate 对象。
LocalDate date1=LocalDate.of(2023,6,7);
System.out.println("日期为:"+date1);
parse: 解析时间日期字符串为对象。例如:LocalDateTime.parse("2023-05-08T02:30:00") 将字符串解析为一个 LocalDateTime 对象。
LocalDateTime dateTime2 = LocalDateTime.parse("2023-05-07T11:30:00");
System.out.println(dateTime2);//2023-05-07T11:30
get: 获取时间日期对象的各种信息,如年、月、日、时、分、秒等。例如:date.getMonth() 返回该日期对象的月份。
LocalDate date = LocalDate.now();
int month = date.getMonthValue(); //获取当前月份的值
System.out.println(month); //5
with: 修改时间日期对象的某些字段值,生成新的对象。例如:time.withHour(15) 返回一个修改了小时数为 15 的 LocalTime 对象。
LocalTime time1=LocalTime.of(1,0,0);
System.out.println(time1.withHour(15));//15:00
plus / minus: 对时间日期对象进行加减操作。例如:dateTime.plus(Duration.ofDays(1)) 将日期时间对象加上一天的时间长度,返回新的日期时间对象。
LocalDateTime dateTime = LocalDateTime.now();
LocalDateTime tomorrow = dateTime.plus(Duration.ofDays(1));
System.out.println("当前时间为:" + dateTime);//2023-5-7T11:30:00.000
System.out.println("明天的时间为:" + tomorrow);//2023-6-7T11:30:00.000
is: 判断时间日期对象的某个属性是否满足某个条件。例如:date.isLeapYear() 判断该日期对象是否是闰年。
LocalDate date = LocalDate.now();
boolean isLeapYear = date.isLeapYear();
System.out.println("当前日期是否为闰年:" + isLeapYear);//false
format: 格式化时间日期对象为字符串。例如:dateTime.format(DateTimeFormatter.ISO_DATE_TIME) 将日期时间对象格式化为 ISO 格式的字符串。
LocalDateTime dateTime = LocalDateTime.now();
String isoDateTime = dateTime.format(DateTimeFormatter.ISO_DATE_TIME);
System.out.println("当前日期时间的 ISO 格式:" + isoDateTime);
//当前日期时间的 ISO 格式:2023-05-07T11:30:00.000
▲注意:不是所有以上前缀的方法都适用于所有时间日期类。不同的时间日期类可能提供了不同的方法,具体使用时需要参考相应的文档。
3.java.time里面的类:
LocalDate:存日期,不包含时间和时区信息,例如 2023-6-7。例如:
LocalDate date1=LocalDate.of(2023,6,7);
System.out.println("日期为:"+date1);
LocalTime:存时间,不包含日期和时区信息,例如 12:30:00。类似以上用法。
LocalDateTime:存日期和时间,不包含时区信息,例如 2023-05-07T12:30。例如:
LocalDate date1 = LocalDate.of(2023, 6, 7);
LocalTime time1 = LocalTime.of(11, 30, 0);
LocalDateTime dateTime1 = LocalDateTime.of(date1, time1);
System.out.println(dateTime1);
//2023-06-07T01:00
ZonedDateTime:表示带时区的日期和时间。
Instant:表示时间线上的一个瞬时点,可以精确到纳秒级别。
Duration:一个时间间隔类,用于表示两个时间点之间的时间长度,可以精确到纳秒级别。例如:
LocalDateTime dateTime1=LocalDateTime.of(date1,time1);//2023-6-7T00:00
LocalDateTime dateTime2=LocalDateTime.of(date2,time2);//2023-7-7T00:00
Duration duration = Duration.between(dateTime1,dateTime2);//时间间隔是:PT720H(720小时)
Period:表示日期段,如两个日期之间的差距。例如:
LocalDate today = LocalDate.now();
LocalDate birthday = LocalDate.of(2003, 1, 1);
Period period = Period.between(birthday, today);
int years = period.getYears();
int months = period.getMonths();
int days = period.getDays();
System.out.printf("你已为人类进步事业奋斗了%d 年 %d 个月 %d 天", years, months, days);
// 你已为人类进步事业奋斗了20 年 4 个月 6 天
DateTimeFormatter:日期和时间格式化类,用于将日期和时间格式化为字符串,或将字符串解析成日期和时间。
ZoneId:表示时区信息。
ZoneOffset:表示时区偏移量
No.16