首页 > 其他分享 >核心(Hutool-core)日期时间工具-DateUtil

核心(Hutool-core)日期时间工具-DateUtil

时间:2024-07-31 11:20:41浏览次数:13  
标签:DateUtil core 00 01 dd Hutool date 2017

转换

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方法会自动识别一些常用格式,包括:

yyyy-MM-dd HH:mm:ss
yyyy/MM/dd HH:mm:ss
yyyy.MM.dd HH:mm:ss
yyyy年MM月dd日 HH时mm分ss秒
yyyy-MM-dd
yyyy/MM/dd
yyyy.MM.dd
HH:mm:ss
HH时mm分ss秒
yyyy-MM-dd HH:mm
yyyy-MM-dd HH:mm:ss.SSS
yyyyMMddHHmmss
yyyyMMddHHmmssSSS
yyyyMMdd
EEE, dd MMM yyyy HH:mm:ss z
EEE MMM dd HH:mm:ss zzz yyyy
yyyy-MM-dd'T'HH:mm:ss'Z'
yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
yyyy-MM-dd'T'HH:mm:ssZ
yyyy-MM-dd'T'HH:mm:ss.SSSZ
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);

//结果 2017/03/01
String format = DateUtil.format(date, "yyyy/MM/dd");

//常用格式的格式化,结果:2017-03-01
String formatDate = DateUtil.formatDate(date);

//结果:2017-03-01 00:00:00
String formatDateTime = DateUtil.formatDateTime(date);

//结果:00:00:00
String formatTime = DateUtil.formatTime(date);

获取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);

//一天的开始,结果:2017-03-01 00:00:00
Date beginOfDay = DateUtil.beginOfDay(date);

//一天的结束,结果:2017-03-01 23:59:59
Date endOfDay = DateUtil.endOfDay(date);

日期时间偏移

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

String dateStr = "2017-03-01 22:33:23";
Date date = DateUtil.parse(dateStr);

//结果:2017-03-03 22:33:23
Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);

//常用偏移,结果:2017-03-04 22:33:23
DateTime newDate2 = DateUtil.offsetDay(date, 3);

//常用偏移,结果:2017-03-01 19:33:23
DateTime newDate3 = DateUtil.offsetHour(date, -3);
针对当前时间,提供了简化的偏移方法(例如昨天、上周、上个月等):

//昨天
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);

//相差一个月,31天
long betweenDay = DateUtil.between(date1, date2, DateUnit.DAY);

格式化时间差

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

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

星座和属相

// "摩羯座"
String zodiac = DateUtil.getZodiac(Month.JANUARY.getValue(), 19);

// "狗"
String chineseZodiac = DateUtil.getChineseZodiac(1994);

日期范围

// 创建日期范围生成器
DateTime start = DateUtil.parse("2021-01-31");
DateTime end = DateUtil.parse("2021-03-31");
DateRange range = DateUtil.range(start, end, DateField.MONTH);

// 简单使用
// 开始时间
DateRange startRange = DateUtil.range(DateUtil.parse("2017-01-01"), DateUtil.parse("2017-01-31"), DateField.DAY_OF_YEAR);
// 结束时间
DateRange endRange = DateUtil.range(DateUtil.parse("2017-01-31"), DateUtil.parse("2017-02-02"), DateField.DAY_OF_YEAR);
// 交集 返回 [2017-01-31 00:00:00]
List dateTimes = DateUtil.rangeContains(startRange, endRange);
// 差集 返回 [2017-02-01 00:00:00, 2017-02-02 00:00:00]
List dateNotTimes = DateUtil.rangeNotContains(startRange,endRange);
// 区间 返回[2017-01-01 00:00:00, 2017-01-02 00:00:00, 2017-01-03 00:00:00]
List rangeToList = DateUtil.rangeToList(DateUtil.parse("2017-01-01"), DateUtil.parse("2017-01-03"), DateField.DAY_OF_YEAR);

标签:DateUtil,core,00,01,dd,Hutool,date,2017
From: https://www.cnblogs.com/velloLei/p/18334218

相关文章

  • 核心(Hutool-core)克隆工具cn.hutool.clone.CloneSupport
    一、直接继承extendsCloneSupport这个类就完事了/**狗狗类,用于继承CloneSupport类@authorLooly*/privatestaticclassDogextendsCloneSupport{privateStringname="wangwang";privateintage=3;}当然,使用CloneSupport的前提是你没有继承任何的类,谁让Java......
  • 核心(Hutool-core)类型转换Convert类
    Java常见类型转换转换为字符串:inta=1;//aStr为"1"StringaStr=Convert.toStr(a);long[]b={1,2,3,4,5};//bStr为:"[1,2,3,4,5]"StringbStr=Convert.toStr(b);转换为指定类型数组:String[]b={"1","2","3","4&q......
  • linux+jenkins+github+.net core CI/CD 快速部署
    目标:代码提交后,在jenkins点击build,编译通过后能让linux更新.netcore文件和重新运行 步骤:1.腾讯云搞一台免费linux服务器:https://cloud.tencent.com/2.服务上安装jenkinshttps://www.jenkins.io/doc/book/installing/linux/#red-hat-centos3.腾讯云防火墙开放8080端口,另一......
  • [rCore学习笔记 019]在main中测试本章实现
    写在前面本随笔是非常菜的菜鸡写的。如有问题请及时提出。可以联系:[email protected]:https://github.com/WindDevil(目前啥也没有批处理操作系统的启动和运行流程要想把本章实现的那些模块全部都串联在一起以实现运行一个批处理操作系统,回顾本章内容,思考批处理操作......
  • ASP.NET Core中上传文件
    1.创建一个文件上传的表单在一个视图中(比如Index.cshtml),添加一个表单来让用户选择文件并上传。@modelIFormFile<formmethod="post"enctype="multipart/form-data"><divclass="form-group"><labelfor="file">选择文件</......
  • 如何使用我的 CoreML 模型在 Vision 中获取 MLMultiArray 输出
    我正在尝试在swift中将我的CoreMl模型与Vision框架结合使用。我的模型输出一个MLMultiArray。当我通过Vision运行它时,我确实得到了一个输出,但是输出的类型是VNObservation,我无法使用它,也无法将其转换为MLMultiArray。有谁知道如何获取MLMultiArray作为输出,或将VNOb......
  • ImportError:无法从“langchain_core.utils”导入名称“pre_init”
    当我想从requirements.txt安装langchain库时,我得到ImportError:cannotimportname'pre_init'from'langchain_core.utils'我尝试使用这些命令从终端安装库:pipinstallgigachainpipinstallgigachatpipinstall-Ulangchain-community并且它正在工作,所以我使......
  • java判断ip地址是否正确,使用hutool工具判断ip地址
    1.导入hutool的maven依赖<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency>2.直接复制一下代码importcn.h......
  • gdb调试core dump文件之二
    1目录2corruptstack?3inforegisters4(gdb)x的使用5X86上崩溃6调试线程1目录1.1目录指定dir在GDB中使用dir命令来添加新的源代码路径。这个命令允许我指定一个或多个目录,GDB会在这些目录中查找源代码文件。gdb./your_executable#启动可执行文件(gdb)dir/p......
  • netcore日志与异常
    ILogger简单使用asp.netcore的webApplicationBuilder中自带了一个日志组件。无需手动注册服务就能直接在控制器中构造注入。publicHomeController(ILogger<HomeController>logger){_logger=logger;}_logger.LogTrace("trace{path}",HttpContext.Request.Path);_......