码迷,mamicode.com
首页 > 编程语言 > 详细

Java 8的Time包常用API

时间:2017-11-09 14:25:10      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:lock   span   tween   att   code   mat   java   pat   orm   

 

Date、Canlender、SimpleDateFormat类在新的Time包面前几乎没有优势

 

日期LocalDate,时间LocalTime,日期时间LocalDateTime。

 

时区ZoneId,时间点Instant,时间单位ChronoUnit,格式化DateTimeFormatter

 

LocalDate

 

当前日期

    LocalDate localDate = LocalDate.now();

 

指定日期

    // (方式1)
    LocalDate localDate1 = LocalDate.of(2017, 07, 20);
    // (方式2)
    LocalDate localDate2 = LocalDate.parse("2017-07-25");

 

 

日期加/减 多少个时间单位

    // 加1个月(方式1)
    LocalDate localDate = localDate.plus(1, ChronoUnit.MONTHS);
    // 加1天(方式2)
    LocalDate localDate = localDate.plusDays(1);

 

解析日期

    int dayOfMonth = localDate.getDayOfMonth();

 

是否闰年

    boolean b = localDate.isLeapYear();

 

是否是一个日期之前/之后

    boolean b = localDate1.isBefore(localDate2);
    boolean b = localDate1.isAfter(localDate2);

 

两个日期相差多少个时间单位

    // 相差多少天
long
diff = ChronoUnit.DAYS.between(localDate1, localDate2); // 相差多少秒
long diff = ChronoUnit.SECONDS.between(localDate1, localDate2);

 

格式化

    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    String s = dateTimeFormatter.format(localDate);

 

两个日期是否相等

    boolean b = localDate1.equals(localDate2);

 

LocalTime

 

大部分的API与LocalDate同理,区别之处在于

1、无法判断是否闰年

2、LocalDate对象toString()返回的是“2017-11-09”,LocalTime对象toString()返回的是“11:16:50.144”(如果毫秒数为0,则最后一段数字不显示),如果想要返回HH:mm:ss格式,需要格式化。

 

LocalDateTime

 

大部分的API与LocalDate同理,区别之处在于

1、无法直接判断是否闰年,需要先转化为LocalDate

 

boolean b = localDateTime.toLocalDate().isLeapYear();

2、LocalDateTime对象toString()返回的是“2017-11-09T11:16:50.144”,如果想要返回HH:mm:ss格式,需要格式化。

 

处理遗留代码中的java.util.Date对象

 

先将Date转化为Instant对象,然后根据需要用LocalDate、LocalTime、LocalDateTime各自的from工厂方法生成对象

    // 遗留代码
    Date birthday = user.getBirthday();
    Date orderTime = order.getOrderTime();
    // 转换
    LocalDate birthdayEx = LocalDate.from(birthday.toInstant());
    LocalDateTime orderTimeEx = LocalDateTime.from(orderTime.toInstant());

 

处理遗留代码中的java.util.Calendar对象

 

java.util.Date对象的转化同理,Calendar对象也有toInstant方法。

Java 8的Time包常用API

标签:lock   span   tween   att   code   mat   java   pat   orm   

原文地址:http://www.cnblogs.com/deolin/p/7808619.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!