【前言】
关于日期的处理在每一个项目中都是会涉及到的。
【过程】
- Instant.now() //Instant表示一个精确的时间点
- LocalDate //本地日期
新的API可以用生活中一样的方式来表示年和月份。
//获取当前时间
LocalDate now=LocalDate.now();
//2018-07-16
LocalDate newYear=LocalDate.of(2018,7,16);
//三天后
now.plusDays(3);
//一周后
now.plusWeeks(1);
//两天前
now.minusDays(2);
//增加一个月并不会出现 2018-02-31而是会返回该月的最后一个有效日期,即2018-02-28
LocalDate.of(2018,1,31).plusMonths(1);
LocalDate feb=LocalDate.of(2017,2,1);
feb.withYear(2019); //2019-2-1
feb.withDaysOfYear(10); //2017-1-10
feb.withDayOfMonth(10); //2017-2-10
withXxx()表示以该日期为基础,修改年、月、日字段,并返回一个新的日期
//2019-02-01
feb.plus(Period.ofYears(2));
//2015-02-01
feb.minus(Period.ofYears(2));
//输出P9D,表示相差9天
feb.until(LocalDate.of(2017,2,10));
//SUNDAY
LocalDate.of(2017,1,1).getDayOfWeek();
//TUESDAY
DayOfWeek.SUNDAY.plus(2);
getXxx()返回所需要的数据
LocalTime (本地时间)表示一天中的某个时间,例如18:00:00
- LocalDateTime (本地日期时间) 表示一个日期和 时间,它适合用来存储确定时区的某个时间点。
- 格式化和解析 DateTimeFormatter
DateTimeFormatter是不可变类,而SimpleDateFormatter是非线程安全的。
//自定义模式格式化
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now) ;
//自定义格式器
DateTimeFormatter dft=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
Java 日期/时间API包
java.time :这是新的Java日期/时间API的基础包
java.time.temparal :这个包包含一些时态对象,我们可以用其找出关于日期/时间对象的某个日期或时间
【总结】
Java8在日期的处理方面比Date和Calender简单了很多,多用多总结。