zoukankan      html  css  js  c++  java
  • dateutil

    Date、long、Calendar之间的相互转换

    //当前时间
    Date date = DateUtil.date();
    //当前时间
    Date date2 = DateUtil.date(Calendar.getInstance());
    //当前时间
    Date date3 = DateUtil.date(System.currentTimeMillis());
    //当前时间字符串,格式:yyyy-MM-dd HH:mm:ss
    String now = DateUtil.now();
    //当前日期字符串,格式:yyyy-MM-dd
    String today= DateUtil.today();

    字符串转日期

    DateUtil.parse方法会自动识别一些常用格式,包括:

    1. yyyy-MM-dd HH:mm:ss
    2. yyyy-MM-dd
    3. HH:mm:ss
    4. yyyy-MM-dd HH:mm
    5. yyyy-MM-dd HH:mm:ss.SSS
    String dateStr = "2017-03-01";
    Date date = DateUtil.parse(dateStr);
    

    我们也可以使用自定义日期格式转化:

    String dateStr = "2017-03-01";
    Date date = DateUtil.parse(dateStr, "yyyy-MM-dd");

    格式化日期输出

    String dateStr = "2017-03-01";
    Date date = DateUtil.parse(dateStr);
    
    String format = DateUtil.format(date, "yyyy/MM/dd");
    Assert.assertEquals("2017/03/01", format);
    
    //常用格式的格式化
    String formatDate = DateUtil.formatDate(date);
    Assert.assertEquals("2017-03-01", formatDate);
    String formatDateTime = DateUtil.formatDateTime(date);
    Assert.assertEquals("2017-03-01 00:00:00", formatDateTime);
    String formatTime = DateUtil.formatTime(date);
    Assert.assertEquals("00:00:00", formatTime);

    获取Date对象的某个部分

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

    开始和结束时间

    有的时候我们需要获得每天的开始时间、结束时间,每月的开始和结束时间等等,DateUtil也提供了相关方法:

    String dateStr = "2017-03-01 22:33:23";
    Date date = DateUtil.parse(dateStr);
    
    //一天的开始
    Date beginOfDay = DateUtil.beginOfDay(date);
    Assert.assertEquals("2017-03-01 00:00:00", beginOfDay.toString());
    //一天的结束
    Date endOfDay = DateUtil.endOfDay(date);
    Assert.assertEquals("2017-03-01 23:59:59", endOfDay.toString());

    日期时间偏移

    日期或时间的偏移指针对某个日期增加或减少分、小时、天等等,达到日期变更的目的。Hutool也针对其做了大量封装

    String dateStr = "2017-03-01 22:33:23";
    Date date = DateUtil.parse(dateStr);
    
    Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);
    Assert.assertEquals("2017-03-03 22:33:23", newDate.toString());
    
    //常用偏移
    DateTime newDate2 = DateUtil.offsetDay(date, 3);
    Assert.assertEquals("2017-03-04 22:33:23", newDate2.toString());
    //常用偏移
    DateTime newDate3 = DateUtil.offsetHour(date, -3);
    Assert.assertEquals("2017-03-01 19:33:23", newDate3.toString());
    

    针对当前时间,提供了简化的偏移方法(例如昨天、上周、上个月等):

    //昨天
    DateUtil.yesterday()
    //明天
    DateUtil.tomorrow()
    //上周
    DateUtil.lastWeek()
    //下周
    DateUtil.nextWeek()
    //上个月
    DateUtil.lastMonth()
    //下个月
    DateUtil.nextMonth()

    日期时间差

    有时候我们需要计算两个日期之间的时间差(相差天数、相差小时数等等),Hutool将此类方法封装为between方法:

    String dateStr1 = "2017-03-01 22:33:23";
    Date date1 = DateUtil.parse(dateStr1);
    
    String dateStr2 = "2017-04-01 23:33:23";
    Date date2 = DateUtil.parse(dateStr2);
    
    long betweenDay = DateUtil.between(date1, date2, DateUnit.DAY);
    Assert.assertEquals(31, betweenDay);//相差一个月,31天

    格式化时间差

    有时候我们希望看到易读的时间差,比如XX天XX小时XX分XX秒,此时使用DateUtil.formatBetween方法:

    //Level.MINUTE表示精确到分
    String formatBetween = DateUtil.formatBetween(between, Level.MINUTE);
    //输出:31天1小时
    Console.log(formatBetween);

    计时器

    计时器用于计算某段代码或过程花费的时间

    TimeInterval timer = DateUtil.timer();
    
    //---------------------------------
    //-------这是执行过程
    //---------------------------------
    
    timer.interval();//花费毫秒数
    timer.intervalRestart();//返回花费时间,并重置开始时间
    timer.intervalMinute();//花费分钟数

    其它

    //年龄
    DateUtil.ageOfNow("1990-01-30");
    
    //是否闰年
    DateUtil.isLeapYear(2017);
  • 相关阅读:
    CF1063A Oh Those Palindromes
    洛谷——P1640 [SCOI2010]连续攻击游戏
    洛谷—— P1268 树的重量
    洛谷——P4932 浏览器
    洛谷——P1627 [CQOI2009]中位数
    洛谷——P4109 [HEOI2015]定价
    CF438D The Child and Sequence
    AFO
    About me & 留言板
    The real universe
  • 原文地址:https://www.cnblogs.com/shida-liu/p/12500633.html
Copyright © 2011-2022 走看看