超实用的18个Java8日期处理的实践!建议收藏!

JAVA 8 推出了全新的日期时间API,在教程中我们将通过一些简单的实例来学习如何使用新API 。
Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限 。
新API基于ISO标准日历系统,java.time包下的所有类都是不可变类型而且线程安全 。

超实用的18个Java8日期处理的实践!建议收藏!

文章插图
 
示例1:Java 8中获取今天的日期Java 8 中的 LocalDate 用于表示当天日期 。和java.util.Date不同,它只有日期,不包含时间 。当你仅需要表示日期时就用这个类 。
package com.shxt.demo02;import java.time.LocalDate;public class Demo01 {    public static void main(String[] args) {        LocalDate today = LocalDate.now();        System.out.println("今天的日期:"+today);    }}示例2:Java 8中获取年、月、日信息package com.shxt.demo02;import java.time.LocalDate;public class Demo02 {    public static void main(String[] args) {        LocalDate today = LocalDate.now();        int year = today.getYear();        int month = today.getMonthValue();        int day = today.getDayOfMonth();        System.out.println("year:"+year);        System.out.println("month:"+month);        System.out.println("day:"+day);    }}示例3:Java 8中处理特定日期我们通过静态工厂方法now()非常容易地创建了当天日期,你还可以调用另一个有用的工厂方法LocalDate.of()创建任意日期,该方法需要传入年、月、日做参数,返回对应的LocalDate实例 。这个方法的好处是没再犯老API的设计错误,比如年度起始于1900,月份是从0开 始等等 。
package com.shxt.demo02;import java.time.LocalDate;public class Demo03 {    public static void main(String[] args) {        LocalDate date = LocalDate.of(2018,2,6);        System.out.println("自定义日期:"+date);    }}示例4:Java 8中判断两个日期是否相等package com.shxt.demo02;import java.time.LocalDate;public class Demo04 {    public static void main(String[] args) {        LocalDate date1 = LocalDate.now();        LocalDate date2 = LocalDate.of(2018,2,5);        if(date1.equals(date2)){            System.out.println("时间相等");        }else{            System.out.println("时间不等");        }    }}示例5:Java 8中检查像生日这种周期性事件package com.shxt.demo02;import java.time.LocalDate;import java.time.MonthDay;public class Demo05 {    public static void main(String[] args) {        LocalDate date1 = LocalDate.now();        LocalDate date2 = LocalDate.of(2018,2,6);        MonthDay birthday = MonthDay.of(date2.getMonth(),date2.getDayOfMonth());        MonthDay currentMonthDay = MonthDay.from(date1);        if(currentMonthDay.equals(birthday)){            System.out.println("是你的生日");        }else{            System.out.println("你的生日还没有到");        }    }}只要当天的日期和生日匹配,无论是哪一年都会打印出祝贺信息 。你可以把程序整合进系统时钟,看看生日时是否会受到提醒,或者写一个单元测试来检测代码是否运行正确 。


推荐阅读