zoukankan      html  css  js  c++  java
  • hutool的DateUtil工具类

    1.0、DateUitl(日期时间)

    0)坐标

    <dependency>
          <groupId>cn.hutool</groupId>
          <artifactId>hutool-all</artifactId>
          <version>5.3.9</version>
        </dependency>

    1)date方法获取当前Date类型的日期时间(格式:yyyy-MM-dd HH:mm:ss)

    Date date = DateUtil.date(); // 2020-09-14 10:27:06
    // Calendar类型转Date类型       
    Date date2 = DateUtil.date(Calendar.getInstance()); // 2020-09-14 10:27:07
    // 毫秒值转Date类型
    Date date3 = DateUtil.date(System.currentTimeMillis()); // 2020-09-14 10:27:07

    以上三种方式都可以获取格式化的date时间

    2)now方法获取当前字符串类型的日期时间

    //当前时间字符串,格式:yyyy-MM-dd HH:mm:ss
    String now = DateUtil.now(); // 2020-09-14 10:22:46
    //当前日期字符串,格式:yyyy-MM-dd
    String today= DateUtil.today(); // 2020-09-14

    3)parse方法将字符串类型日期解析为Date类型日期

    复制代码
    // 将字符串格式的日期解析成Date格式
    String dateStr = "2017-03-01"; // 2017-03-01 00:00:00 Date date = DateUtil.parse(dateStr);
    // 将字符串格式的日期解析成Date格式
    String dateStr2 = "2017-03-01 23:20:23";
    Date date2 = DateUtil.parse(dateStr2); // 2017-03-01 23:20:23
    // 将字符串格式的日期解析成指定的Date格式
    Date date3 = DateUtil.parse(dateStr2, "yyyy-MM-dd"); // 2017-03-01 00:00:00
     
    复制代码

    4)format方法将字符串类型日期格式化为字符串类型日期

    复制代码
    // 当前Date格式时间
    Date date = DateUtil.date(); // 格式化为指定格式的字符串 String format = DateUtil.format(date, "yyyy/MM/dd");//结果:2020/07/16 // 格式化为日期格式字符串 String formatDate = DateUtil.formatDate(date);//结果:2020-07-16 // 格式化为日期时间格式字符串 String formatDateTime = DateUtil.formatDateTime(date);//结果:2020-07-16 20:22:54 // 格式化为时间格式字符串 String formatTime = DateUtil.formatTime(date);//结果:20:22:54
    复制代码

    5)year方法和month方法获取Date类型日期的年份和月份

    Date date = DateUtil.date();
    //获得年的部分
    int year = DateUtil.year(date);
    //获得月份,从0开始计数
    int month = DateUtil.month(date)+1;

    6)beginOfDay方法和endOfMonth方法获取某天/某月的开始或结束时间

    复制代码
    Date date = DateUtil.date();
    //一天的开始,结果:2017-03-01 00:00:00
    Date beginOfDay = DateUtil.beginOfDay(date);
    //一天的结束,结果:2017-03-01 23:59:59
    Date endOfDay = DateUtil.endOfDay(date);
    //一月的开始,结果:2017-03-01 00:00:00
    Date beginOfMonth = DateUtil.beginOfMonth(date);
    //一月的结束,结果:2017-03-31 23:59:59
    Date endOfMonth = DateUtil.endOfMonth(date);
    复制代码

    项目中代码使用:在项目中,前端传递一个对象{date:['2020-10-07','2020-11-07']}(对象张有数组元素,数组中包含开始日期和结束日期)到后台,后台用字符串String('2020-10-07','2020-11-07')接收,对字符串用逗号分割之后,再使用beginOfDay和endOfDay获取开始日期的开始时间和结束日期的结束时间。

    复制代码
    public Result getList(String date) {
            Date now = null;
            Date last = null;
            String split[] = date.split(",");//获取查询日期的开始时间,00:00:00
            last = DateUtil.beginOfDay(DateUtil.parse(split[0]));
            //获取查询日期的结束时间,23:59:59
            now = DateUtil.endOfDay(DateUtil.parse(split[1]));
           。。。。。
    }
    复制代码

    7)offsetHour方法和offsetDay方法获取时间偏移(向前或向后)

    复制代码
    Date date = DateUtil.date();
    //获取三个小时前的时间,结果:2017-03-01 19:33:23
    Date newDate = DateUtil.offsetHour(date, -3);
    //获取三个小时后的时间
    Date date = DateUtil.offsetHour(date,3); //获取三天后的时间,结果:2017-03-04 22:33:23 Date newDate2 = DateUtil.offsetDay(date, 3); //获取三天前的时间,结果:2017-03-04 22:33:23 Date newDate3 = DateUtil.offsetDay(date, -3); //昨天 Date yesterday = DateUtil.yesterday(); //明天 Date tomorrow = DateUtil.tomorrow(); //上周 Date Date = DateUtil.lastWeek(); //下周 Date Date1 = DateUtil.nextWeek(); //上个月 Date Date2 = DateUtil.lastMonth(); //下个月 Date Date3 = DateUtil.nextMonth();
    复制代码

    8)between方法获取日期天数差和小时差

    复制代码
    String dateStr1 = "2017-03-01 22:33:23";
    Date date1 = DateUtil.parse(dateStr1);
    String dateStr2 = "2017-05-01 23:33:23";
    Date date2 = DateUtil.parse(dateStr2);
    String dateStr3 = "2017-03-02 20:23:35";
    Date date3 = DateUtil.parse(dateStr3);
    
    //两个时间段相差的天数
    long betweenDay = DateUtil.between(date1, date2, DateUnit.DAY);
    //两个时间段相差的小时
    long betweenHour = DateUtil.between(date1, date3, DateUnit.HOUR);
    
    //格式化时间差,精确到分
    String s = DateUtil.formatBetween(betweenDay, BetweenFormater.Level.MINUTE);
    复制代码

    9)其他

     //年龄
    int age = DateUtil.ageOfNow("1990-01-30");
    
    //是否闰年
    boolean leapYear = DateUtil.isLeapYear(2017);
  • 相关阅读:
    LINUX下用select实现串口通讯示例
    续——老机焕发青春——win8 ramos 的本地安装 (涉及vhd差分盘)
    nexus 4 下 ubuntu touch 配置 nodejs环境
    nexus 4 下 DualBootInstallation 安装 ubuntu touch
    老机焕发青春 之硬盘篇
    Mac 10.9.2后airplay出现的bug
    初识javascript(一):js在windows下运行的几种形式
    过了一年了.关于扁平化.和一些唠叨
    inet_ntop(), inet_pton() inet_ntoa(), inet_aton(), inet_addr, htons(), htonl(), ntohs(), ntohl() struct hostent ,struct sockaddr_in
    gethostbyname尽量少用
  • 原文地址:https://www.cnblogs.com/yao5758/p/14660886.html
Copyright © 2011-2022 走看看