标签:
java.time包中的是类是不可变且线程安全的。
新的时间及日期API位于java.time中,下面是一些关键类
●Instant——它代表的是时间戳,注意这里默认的Instant是比北京少8个时区
●LocalDate——不包含具体时间的日期,比如2014-01-14。它可以用来存储生日,周年纪念日,入职日期等。
●LocalTime——它代表的是不含日期的时间
●LocalDateTime——它包含了日期及时间,不过还是没有偏移信息或者说时区。
●ZonedDateTime——这是一个包含时区的完整的日期时间,偏移量是以UTC/格林威治时间为基准的,如:2018-10-08T18:12:38.547+08:00[Asia/Shanghai]。
1. Date转LocalDate
Date首先转化为Instant时间戳,
/**
* Date转LocalDate: Date -> Instant + System default time zone = LocalDate
*/
@Test
public void dateToLocalDateAndLocalDateTime(){
Date date = new Date();
Instant instant = date.toInstant();
/**
* instant : 2018-10-08T09:50:21.852Z
* Zone : UTC+0
* 注意这里默认的Instant是比北京少8个时区
*/
//获得本地默认时区
ZoneId defaultZoneId = ZoneId.systemDefault();
LocalDate localDate = instant.atZone(defaultZoneId).toLocalDate();
System.out.println(localDate);
//2018-10-08
}
2. 13位long类型转LocalDate
long -> Instant +System default time zone = LocalDate
public LocalDate longToLocalDate(Long time){
//System Default TimeZone : Asia/Shanghai
ZoneId defaultZoneId = ZoneId.systemDefault();
//2018-01-04T16:00:00Z
//时间戳
Instant instant = Instant.ofEpochMilli(time);
//2018-01-05
LocalDate localDate = instant.atZone(defaultZoneId).toLocalDate();
return localDate;
}
3. 获取现在的日期
Java8中有个叫LocalDate的类,能用来表示日期。这个类与java.util.Date略有不同,因为它只包含日期,没有时间。
4. 获取年月日
5. 判断两个日期之间相差多少天
/**
* 判断两个日期相差多少天
*/
@Test
public void localDateDiff(){
LocalDate date1 = LocalDate.of(2018,9,20);
LocalDate date2 = LocalDate.of(2018,10,3);
long l = date2.toEpochDay() - date1.toEpochDay();
System.out.println(l);
}
未完待续
部分参考:
标签:
来源: https://www.cnblogs.com/theRhyme/p/9756154.html