【Hutool】Hutool工具类之日期时间工具——DateUtil

一、用于取代Date对象的DateTime对象

  再也不用Date SimpleDateFormat Calendar之间倒腾来倒腾去了!日期创建-获取-操作一步到位!

    如果JDK版本更新到了8及以上,不妨尝试新的时间日期API(参见JDK8新特性随笔篇)

  学习一个类的基本方式是了解其获取方式(构造器),与常用方法(API)

  以下是引用自官网示例的Demo:

   public static void main(String[] args) {
        DateTime dateTime = new DateTime("2017-9-14 21:55:18", "yyyy-MM-dd HH:mm:ss");
        // 获取日期成员(年、季度、月、日)
        int year = dateTime.year();//
        System.out.println("year = " + year);
        int season = dateTime.season();// 季度
        System.out.println("season = " + season);
        int month = dateTime.month();// 月份
        System.out.println("month = " + month);
        int dayOfWeek = dateTime.dayOfWeek();// 周几
        System.out.println("dayOfWeek = " + dayOfWeek);
        int dayOfMonth = dateTime.dayOfMonth();// 此月第N天
        System.out.println("dayOfMonth = " + dayOfMonth);
        // 调整日期时间
        DateTime dateTime1 = dateTime.offset(DateField.DAY_OF_MONTH, -1);
        System.out.println(dateTime1.toString());
    }

  结果:

  

二、强大的日期时间工具类——DateUtil

   1.解析——字符串解析为日期

  public static void main(String[] args) {
        // 日期字符串请补全为2位数字
        String str1 = "2017-09-14";
        String str2 = "2017-09-14 21:03:01";
        // 自动感应格式
        Date date1 = DateUtil.parse(str1);
        Date date2 = DateUtil.parse(str2);
        System.out.println("date1:"+date1);
        System.out.println("date2:"+date2);
        // 手动设置格式(其中DateTime是可以完全替代Date的一个子类)
        DateTime dateTime1 = DateUtil.parse(str1, "yyyy-MM-dd");
        DateTime dateTime2 = DateUtil.parse(str2, "yyyy-MM-dd HH:mm:ss");
        System.out.println(dateTime1);
        System.out.println(dateTime2);
    }

  

  2.格式化——将日期格式化为字符串

 public static void main(String[] args) {
        // 日期字符串请补全为2位数字
        String str1 = "2017-09-14";
        // 自动感应格式
        Date date1 = DateUtil.parse(str1);
        // 格式化为指定格式字符串
        String s1 = DateUtil.format(date1, "yyyy年MM月dd日");
        System.out.println("s1 = " + s1);
        // 常用格式格式化
        String s2 = DateUtil.formatDate(date1);
        System.out.println("s2 = " + s2);
    }

  结果:

  

  3.获取日期成员(对比DateTime的操作)

  public static void main(String[] args) {
        // 日期字符串请补全为2位数字
        String str1 = "2017-09-14";
        // 自动感应格式
        Date date1 = DateUtil.parse(str1);
        // 获取指定日期成员(通过DateTime同样可以完成)
        int year = DateUtil.year(date1);
        System.out.println("year = " + year);
        int dayOfMonth = DateUtil.dayOfMonth(date1);
        System.out.println("dayOfMonth = " + dayOfMonth);
    }

  结果:

  

  4.日期时间偏移

  public static void main(String[] args) {
        // 日期字符串请补全为2位数字
        String str1 = "2017-09-14";
        // 自动感应格式
        Date date1 = DateUtil.parse(str1);
        // 日期时间偏移
        DateTime dateTime = DateUtil.offset(date1, DateField.HOUR_OF_DAY, 5);
        System.out.println("dateTime = " + dateTime);
        DateTime dateTime1 = DateUtil.offsetDay(date1, 1);
        System.out.println("dateTime1 = " + dateTime1);
    }

  结果:

  

  针对当前时间的简化偏移操作:

 public static void main(String[] args) {
        // 当前时间的简化偏移方法
        String now = DateUtil.now();
        System.out.println("now = " + now);
        // 昨天
        DateTime yesterday = DateUtil.yesterday();
        System.out.println("yesterday = " + yesterday);
        // 明天
        DateTime tomorrow = DateUtil.tomorrow();
        System.out.println("tomorrow = " + tomorrow);
        // 上周
        DateTime lastWeek = DateUtil.lastWeek();
        System.out.println("lastWeek = " + lastWeek);
        // 下月
        DateTime nextMonth = DateUtil.nextMonth();
        System.out.println("nextMonth = " + nextMonth);
    }

  结果:

  

  5.其它:

public static void main(String[] args) {
        // 距今年龄
        int age = DateUtil.ageOfNow("2008-12-22");
        System.out.println("age = " + age);
        // 是否闰年
        boolean leapYear = DateUtil.isLeapYear(2017);
        System.out.println("leapYear = " + leapYear);
    }

  结果:

  

原文地址:https://www.cnblogs.com/jiangbei/p/7341211.html