JDK1.8新增时间日期API

在JDK1.7中,处理日期相关的数据我们使用java.util.Data,在JDK1.8及以后的API中,对于时间的使用我们更加便利。新增了LocalDate、LocalTime、LocalDateTime,在java.time包下。分别表示ISO-8601日历系统的日期,时间。他们提供简单的日期或时间,并不包含当前的时间信息,也不包含与时区相关的信息。类的实例是不可变的对象,不但线程安全,而且不能修改

1.新的LocalDate用法

LocaDate today  = LocalDate.now();      //获取当前的日期不包含时间  2018-10-08

LocalDate类提供了获取年、月、日的快捷方法,其实例还包含很多其它的日期属性。通过调用这些方法就可以很方便的得到需要的日期信息

LocalDate today = LocalDate.now();
int year = today.getYear();  //获取当前年份
int month = today.getMonthValue(); // 获取当前月份
int day = today.getDayOfMonth();  // 获取当天是这个月的第几天

int day = toay.getDayOfYear();// 获取当天是一年中的第几天

2.在Java 8中处理特定日期
调用另一个有用的工厂方法LocalDate.of()创建任意日期, 该方法需要传入年、月、日做参数,返回对应的LocalDate实例。这个方法的好处是没再犯老API的设计错误,比如年度起始于1900,月份是从0开 始等等。日期所见即所得,就像下面这个例子表示了1月14日,没有任何隐藏机关。

LocalDate today = LocalDate.of(2018,10,8);
输出   2018-10-08

3.在Java 8中判断两个日期是否相等
现实生活中有一类时间处理就是判断两个日期是否相等。你常常会检查今天是不是个特殊的日子,比如生日、纪念日。这时就需要把指定的日期与某个特定 日期做比较,例如判断这一天是否是假期。下面这个例子会帮助你用Java 8的方式去解决,你肯定已经想到了,LocalDate重载了equal方法,

LocalDate today = LocalDate.of(2018,10,8);
if(today.equals(date)){
    System.out.println("相同的日期");
}

4.在Java 8中检查像生日这种周期性事件
Java 中另一个日期时间的处理就是检查类似每月账单、结婚纪念日、EMI日或保险缴费日这些周期性事件。如果你在电子商务网站工作,那么一定会有一个模块用来在 圣诞节、感恩节这种节日时向客户发送问候邮件。Java中如何检查这些节日或其它周期性事件呢?就是MonthDay类。这个类组合了月份和日,去掉 了年,这意味着你可以用它判断每年都会发生事件。和这个类相似的还有一个YearMonth类。这些类也都是不可变并且线程安全的值类型。通过 MonthDay来检查周期性事件:

LocalDate birDate = LocalDate.of(2018, 10, 8);
MonthDay monthDay = MonthDay.of(birDate.getMonth(), birDate.getDayOfMonth());
MonthDay currDay = MonthDay.from(date);
if(currDay.equals(monthDay)){
    System.out.println("hello");
}else{
    System.out.println("sorry");
}

 5、在Java 8中获取当前时间

LocalTime time = LocalTime.now();// 打印time ,可以看到当前时间就只包含时间信息,没有日期。

6.在当前时间增加小时

LocalTime time = LocalTime.now();
LocalTime newTime  = time.plusHours(2);

7.计算一周后的日期 ChronoUnit是提供的一个工具类

LocalDate date = LocalDate.now();
LocalDate nextWeek = date.plus(2,ChronoUnit.WEEKS);
System.out.println(nextWeek);

8.如何用Java判断日期是早于还是晚于另一个日期

LocalDate birDate = LocalDate.of(2018, 10, 8);
if(birDate.isAfter(date)){
    System.out.println("yes");
}
LocalDate birDate = LocalDate.of(2018, 10, 8);
if(birDate.isBefore(date)){
    System.out.println("yes");
}

9.如何在Java 8中检查闰年

LocalDate date = LocalDate.now();
if(date.isLeapYear()){
    System.out.println("yes");
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值