Hutool 笔记 日期工具类的使用

Hutool(5.5.0版本)中的时间日期工具类DateUtil DateUtil中各种常用方法 阅读详情

日期时间工具

介绍

日期时间包是Hutool的核心包之一,提供针对JDK中Date和Calendar对象的封装,封装对象。

日期时间工具

  • DateUtil 针对日期时间操作提供一系列静态方法
  • DateTime 提供类似于Joda-Time中日期时间对象的封装,继承自Date类,并提供更加丰富的对象方法。
  • FastDateFormat 提供线程安全的针对Date对象的格式化和日期字符串解析支持。此对象在实际使用中并不需要感知,相关操作已经封装在DateUtil和DateTime的相关方法中。
  • DateBetween 计算两个时间间隔的类,除了通过构造新对象使用外,相关操作也已封装在DateUtil和DateTime的相关方法中。
  • TimeInterval 一个简单的计时器类,常用于计算某段代码的执行时间,提供包括毫秒、秒、分、时、天、周等各种单位的花费时长计算,对象的静态构造已封装在DateUtil中。
  • DatePattern 提供常用的日期格式化模式,包括String类型和FastDateFormat两种类型。

日期时间工具-DateUtil

考虑到Java本身对日期时间的支持有限,并且Date和Calendar对象的并存导致各种方法使用混乱和复杂,故使用此工具类做了封装。这其中的封装主要是日期和字符串之间的转换,以及提供对日期的定位。

对于Date对象,为了便捷,使用了一个DateTime类来代替之,继承自Date对象,主要的便利在于,覆盖了toString()方法,返回yyyy-MM-dd HH:mm:ss形式的字符串,方便在输出时的调用(例如日志记录等),提供了众多便捷的方法对日期对象操作。

与java原有日期类型之间的转换

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

        //当前时间
        Date date = DateUtil.date();
        System.out.println(date);
//当前时间
        Date date2 = DateUtil.date(Calendar.getInstance());
        System.out.println(date2);
//当前时间
        Date date3 = DateUtil.date(System.currentTimeMillis());
        System.out.println(date3);
//当前时间字符串,格式:yyyy-MM-dd HH:mm:ss
        String now = DateUtil.now();
        System.out.println(now);
//当前日期字符串,格式:yyyy-MM-dd
        String today= DateUtil.today();
        System.out.println(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);
    我们也可以使用自定义日期格式转化,
    DateUtil.format可以设置0日期格式化,支持以上的格式,
        String s1="2001-08-22 12:21:21";
        DateTime s2 = DateUtil.parse(s1);
        // 输出2001-08-22 12:21:21
        System.out.println(s2);
        String dateStr = "2017-03-01";
        Date date = DateUtil.parse(dateStr);
        //设置自定义解析字符串格式化转换
        String format = DateUtil.format(date, "yyyy/MM/dd");
        //结果 2017/03/01
        System.out.println(format);


        //设置自定义解析字符串格式化转换
        String formatDateTime = DateUtil.formatDateTime(date);
        //结果:2017-03-01 00:00:00
        System.out.println(formatDateTime);
        String formatTime = DateUtil.formatTime(date);
        //结果:00:00:00
        System.out.println(formatTime);

其他功能

DateUtil还有其他几个不常用的功能,包括获取部分日期,日期枚举,日期偏移,计算时差,星座和属相

    // 获取部分日期

        // 获取当前日期
        Date date=DateUtil.date();

        //获得年的部分
        System.out.println(DateUtil.year(date));
        //获得月份,从0开始计数
        System.out.println(DateUtil.month(date));
        //获得月份枚举,用英文表示
        System.out.println(DateUtil.monthEnum(date));


        //日期偏移
        //获取今天开始
        System.out.println(DateUtil.beginOfDay(date));
        //获取今天结束
        System.out.println(DateUtil.endOfDay(date));
        // 向后偏移七天
        System.out.println(DateUtil.offset(date, DateField.DAY_OF_WEEK,7));
        //由于上面的api还是过于繁琐,DateUtil还提供了一些更简化方法
        //昨天
        System.out.println(DateUtil.yesterday());
        //明天
        System.out.println(DateUtil.tomorrow());
        //偏移三天
        System.out.println(DateUtil.offsetDay(date,3));

        // 计算时间差
        String dateStr2 = "2017-04-01 23:33:23";
        Date date2 = DateUtil.parse(dateStr2);
        // 计算时间差,并指定以天为单位
        System.out.println(DateUtil.between(date,date2, DateUnit.DAY));
        //格式化输出时间差
        System.out.println(DateUtil.formatBetween(date,date2, BetweenFormatter.Level.DAY));

        //星座和属相
        // "摩羯座"
        String zodiac = DateUtil.getZodiac(Month.JANUARY.getValue(), 19);
        // "狗"
        String chineseZodiac = DateUtil.getChineseZodiac(1994);
        //计算年龄
        DateUtil.ageOfNow("1990-01-30");
        //判断是否为闰年
        DateUtil.isLeapYear(2017);

DateTime

hutool中的DateTime类继承于java.util.Date类,为Date类扩展了众多简便方法,这些方法多是DateUtil静态方法的对象表现形式,使用DateTime对象可以完全替代开发中Date对象的使用。

新建对象

DateTime提供了多种参数构造

  • Date
  • Calendar
  • String(日期字符串,第二个参数是日期格式)
  • long 毫秒数

构建对象有两种方式:DateTime.of()和new DateTime():

Date date = new Date();
        
//new方式创建
DateTime time = new DateTime(date);
Console.log(time);

//of方式创建
DateTime now = DateTime.now();
DateTime dt = DateTime.of(date);

使用对象

DateTime的成员方法与DateUtil中的静态方法所对应,因为是成员方法,因此可以使用更少的参数操作日期时间。因为在上文已经进行较为完备的介绍,以根据上文的介绍自行使用。

TimeInterval

Hutool通过封装TimeInterval实现计时器功能,即可以计算方法或过程执行的时间。TimeInterval支持分组计时,方便对比时间。

TimeInterval timer = DateUtil.timer();

//---------------------------------
//-------这是执行过程
//---------------------------------

timer.interval();//花费毫秒数
timer.intervalRestart();//返回花费时间,并重置开始时间
timer.intervalMinute();//花费分钟数

// 也可以实现分组计时

final TimeInterval timer = new TimeInterval();

// 分组1
timer.start("1");
ThreadUtil.sleep(800);

// 分组2
timer.start("2");
ThreadUtil.sleep(900);

Console.log("Timer 1 took {} ms", timer.intervalMs("1"));
Console.log("Timer 2 took {} ms", timer.intervalMs("2"));
Hutool 日期时间工具-DateUtil使用(格式化输出,字符串转日期,时间差,格式化时间差,Long、Date相互转化,星期几,时间偏移,获取时间指定部分,开始结束时间) 考虑到Java本身对日期时间的支持有限,并且Date和Calendar对象的并存导致各种方法使用混乱和复杂,故使用此工具类做了封装。这其中的封装主要是日期和字符串之间的转换,以及提供对日期的定位(一个月前等等)。 对于Date对象,为了便捷,使用了一个DateTime类来代替之,继承自Date对象,主要的便利在于,覆盖了toString()方法,返回yyyy-MM-dd HH:mm:ss形式的字符串,方便在输出时的调用(例如日志记录等),提供了众多便捷的方法对日期对象操作。 1格式化输出 Stri. 阅读详情

相关推荐

Spring项目中时间格式化的方法

目录前言使用工具类 `SimpleDateFormat`使用 `@JsonFormat` 前言 在 web 开发中,我们经常会遇到前台和后台进行时间格式转换交互,下面做一下总结 使用工具类 SimpleDateFormat 使用 @JsonFormat 使用 @JSONField 使用 @DateTimeFormat 使用工具类 SimpleDateFormat 对于这个工具类这里不做过多的赘述 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd

桐花思雨 5961

Hutool使用指南(一):时间日期工具

阅读本篇文章大约花费5~6分钟!     从今天开始,持续为大家介绍一款超厉害的国产Java工具——Hutool。Hutool是一个Java工具包类库,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类。适用于很多项目以及Web开发,并且与其他框架没有耦合性。 话不多说,今天首先介绍Hutool中的时间日期相关操作。 时间日期类介绍 DateUtil...

tianc_pig的博客 7万+

机械臂速成小指南(八):标准DH法实战——从连杆坐标系到运动学方程

本文详细介绍了机械臂运动学建模中的标准DH法,从连杆坐标系的建立到运动学方程的求解,提供了实用的操作步骤和代码示例。通过DH参数表和变换矩阵的构建,帮助读者快速掌握机械臂运动学建模的核心技术,并解决实际应用中的常见问题。

oo7890的博客 211

2hutool源码分析:DateUtil(时间工具类)-常用的时间类型Date,DateTime

/** 给定日期的构造 @param date 日期 */ public DateTime(Date date) { this( date,// (date instanceof DateTime) ? ((DateTime) date).timeZone : TimeZone.getDefault() ); } 代码里写了一个多目运算,(date instanceof DateTime) ? ((DateTime) date).timeZone : TimeZone.getDefault()

didi558的博客 3050

[数字电路]用与非门实现BCD译码器驱动数码管

Hello,大家好。这里是xdd_core,好久不见。今天来和大家聊聊大一数字电路课程的一个课设。# Key word:BCD Decoder,Proteus8.x,NAND Gate,Digital Circuit# 流程:Proteus8.x仿真电路并绘制PCB导出Gerber文件打样,最终实物验证。# 以下为我对这个课设的report(里面对整个设计做了详细介绍,并设计了完整的验证电路) 感谢观看,仅供参考,未经作者允许,禁止转载/抄袭,本文已上传至数据库,查重必挂QAQ BCD to 7-Segme

xddcore的博客 6012

Linux实战:rMATS可变剪切分析从零到一,避坑指南与结果深度解析

本文详细介绍了在Linux系统上从零开始部署rMATS进行可变剪切分析的完整流程,包括环境搭建、安装避坑指南、参数优化及结果解读。特别针对gfortran依赖、数学库配置等常见问题提供解决方案,并深入解析JC与JCEC结果的差异及可视化技巧,帮助生物信息学研究者高效完成可变剪切分析。

weixin_30394669的博客 411

8hutool实战:ChineseDate(农历日期工具类)

hutool实战:农历日期工具,最大支持到2055年,支持: - 通过公历日期构造获取对应农历 - 通过农历日期直接构造 关键字:java java JAVA hutool hutool Hutool 工具类 工具类 工具类 DateUtil DateUtil DateUtil

小虚竹的专栏 1万+

win11重装系统简易教程-小白也可以上手!

本文介绍一下win11系统重装的各个步骤,也作为记录供自己后面查看。附上我之前参考的一位知乎大神写的重装win10系统文章的地址本文用到的工具全部是,不需要下载第三方镜像文件(不是说这个不好,只是第三方的软件或镜像文件网上非常多,琳琅满目,小白需要筛选甄别,直接用官方的就比较省心,大神请自便~)

Sddqa的博客 1万+

Hutool日期工具类:日期处理不再愁

Java开发中日期处理常面临复杂性问题,Hutool的DateUtil类提供了便捷解决方案。该工具类主要包含三大功能:(1)日期格式化:通过format、formatDate等方法轻松实现日期到字符串的转换;(2)日期解析:使用parse系列方法将字符串按指定格式转为Date对象;(3)日期计算:支持offsetDay计算日期偏移和between计算日期差值。这些方法显著简化了开发流程,避免了原生JDK日期处理的繁琐操作,为后续学习Hutool文件工具类奠定基础。(149字)

fykam的博客 1149

Carla-UE4Editor导入RoadRunner地图文件(保姆级教程)

以Carla官网导入RoadRunner地图的标准文档为参考,里面增添了很多细节和注意事项,遇到问题的小伙伴过来看看吧。

DSK_981029的博客 1万+

Look4sat蓝牙追星云台

//这是一个追星云台的小程序 //配合Look4sat蓝牙传输数据(W*** A***),并让电机做出动作 //app设置内填好ESP32的蓝牙MAC,数据格式:W$AZ A$EL //希望大家可以共同改进

HoyAnGx的博客 618

Hutool日期工具类时区解析机制解析

Hutool日期工具类时区解析机制解析 【免费下载链接】hutool ????小而全的Java工具类库,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。 项目地址: https://gitcode.com/chinab...

gitblog_01413的博客 500

YOLO26涨点改进 | 检测头改进篇 | 利用ASFF改进YOLO26检测头,自适应空间特征融合模块,在所有的目标检测上均有大幅度的涨点效果

本文提出了一种自适应空间特征融合(ASFF)检测头YOLO26,用于解决目标检测中特征金字塔跨尺度特征不一致的问题。ASFF通过学习空间权重图,自适应地融合不同尺度的特征,抑制特征层间的冲突信息。实验表明,该方法在MSCOCO数据集上显著提升了检测精度(45FPS下AP达42.4%),且仅引入极小推理开销。ASFF模块具有可微分性、模型无关性和计算成本低等优势,能够有效改善特征尺度不变性,实现速度与精度的良好平衡。文章详细介绍了ASFF的原理、实现代码及其在YOLO模型中的集成方法。

Ai缝合怪、助力小伙伴高效发论文 555

日期与字符串相互转化(自定义日期工具类总结,Hutool工具类使用)

日期与字符串相互转化(自定义日期工具类总结,Hutool工具类使用)

白白白鲤鱼的博客 1万+

JavaSwing_4.2: JDialog、JOptionPane(对话框)

JDialog,对话框。使用 JDialog 类可以创建自定义有的对话框,或者调用 JOptionPane 中的多个静态方法快速创建各种标准的对话框。JOptionPane是 JavaSwing 内部已实现好的,以静态方法的形式提供调用,能够快速方便的弹出要求用户提供值或向其发出通知的标准对话框。

谢TS的博客 7万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Hutool日期工具类中isSameYear方法的版本演进分析

Hutool作为Java开发中广泛使用的工具库,其日期时间处理模块DateUtil提供了丰富的日期比较方法。在实际开发中,我们经常需要比较两个日期是否属于同一年份,这种需求在年度统计、报表生成等场景中尤为常见。 ## 方法现状 Hutool 5.x版本中,DateUtil类已经提供了多个日期比较方法: - isSameDay():判断是否为同一天 - isSameWeek():判断是否为同一周 ...

gitblog_01403的博客 419

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Hutool日期工具类中非严格模式下的日期转换问题解析

Hutool日期工具类中非严格模式下的日期转换问题解析 【免费下载链接】hutool ????小而全的Java工具类库,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。 项目地址: https://gitcode.co...

gitblog_01426的博客 341

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

HuTool工具超详细笔记

HuTool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,它涵盖了Java开发底层代码中的方方面面;本文仅罗列一部分,后期还会更新!

Willing卡卡的博客 5092

Java工具类Hutool使用

Java工具类Hutool使用

吴名氏的博客 11万+

hutool实战:ChineseDate(农历日期工具类)

ChineseDate

chenhuakang的博客 2003

【Java 工具类 Hutool】项目中如何引入 Hutool 并正确使用它

这个配置会传递依赖hutool-bom内所有dependencies的内容,当前hutool-bom内的dependencies全部设置了version,就意味着在maven resolve的时候hutool-bom内就算存在dependencyManagement也不会产生任何作用。

激流丶的博客 1万+

Hutool工具类使用笔记

1、日期时间工具DateUtil 相比SimpleDateFormat,使用更为简便,功能更全。 @Test public void test01(){ // 获取当前时间字符串 格式:yyyy-MM-dd HH:mm:ss String now = DateUtil.now(); // 获取当前时间字符串 格式:yyyy-MM-dd String today = DateUtil.today();

Daniel的博客 3870

解决99%国际化场景!Hutool日期工具类多语言格式化实战指南

你是否还在为多语言环境下的日期格式化而头疼?当应用需要面向全球用户时,如何优雅地处理不同时区、不同语言的日期显示?本文将系统讲解Hutool日期工具类的国际化格式化实践,通过10+场景案例带你掌握从基础到高级的全流程解决方案。读完本文,你将获得: - 3种核心国际化格式化API的对比与选型 - 5个实战场景的完整代码实现(含中文/英文/日文多语言案例) - 时区转换与本地化显示的性能优化技巧 -...

gitblog_01407的博客 629

hutool Json使用

本文主要是推荐hutool 使用 Json https://mvnrepository.com/artifact/cn.hutool/hutool-all/4.5.9 <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all --> <dependency> <groupId>cn.hu...

qq_34078119的博客 2万+

Hutool 使用详解

Hutool 是由dromara团队开发的一款 Java 工具包,旨在通过提供丰富的工具类,减少开发者的重复劳动,提升开发效率。Hutool 的设计灵感来源于 Guava、Commons Lang 等工具库,但其功能更加全面,使用更加简便。轻量级:Hutool 仅依赖 JDK,自身没有第三方库依赖。功能全面:涵盖字符串处理、日期处理、集合处理、IO 操作、网络操作等常见功能。易用性强:简洁的 API 设计,使得使用起来非常方便。开源。

繁依Fanyi的博客 5075
上一篇: hutool 笔记二 类型转换工具 Convert
下一篇: 过滤器模式 rust和java的实现
过去日记
过去日记 新星创作者: 后端开发技术领域 新星创作者: 后端开发技术领域
博客等级 码龄3年 5343粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过去日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值