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

2024-04-03 00:32

本文主要是介绍Hutool使用指南(一):时间日期工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

阅读本篇文章大约花费5~6分钟!


    从今天开始,持续为大家介绍一款超厉害的国产Java工具——Hutool。Hutool是一个Java工具包类库,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类。适用于很多项目以及Web开发,并且与其他框架没有耦合性。

话不多说,今天首先介绍Hutool中的时间日期相关操作。

时间日期类介绍

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

个人觉得主要需要了解DateUtil类,DateTime类以及DatePattern类就可以应对大多数时间日期的操作了。下面我们依次来看吧!

 

DateUtil

首先要说明DateUtil中都是静态方法,方便调用,先来看一些实用的方法吧!

一些简单方法

一些简单方法

now():String

当前日期时间 yyyy-MM-dd hh:mm:ss

today():String

今天日期 yyyy-MM-dd

currentSeconds():long

毫秒数

thisYear():int

年份

thisMonth():int

月份(从0开始)

thisWeekOfMonth():int

本月周次(从1开始)

thisWeekOfYear():int

本年周次(从1开始)

thisDayOfMonth():int

本月第几天(从1开始)

thisDayOfWeek():int

本周第几天(从1开始)

thisHour(boolean is24HourClock):int

当前小时

thisMinute():int

当前分

thisSecond():int

当前秒

lastWeek():DateTime

上周今天(往前7天)

lastMonth():DateTime

上个月今天(往前一个月)

nextWeek():DateTime

下周今天(往后7天)

nextMonth():DateTime

下个月今天(往后一个月)

yesterday():DateTime

昨天同时

tomorrow():DateTime

明天同时

这些方法都很简单,相信大家了解一下就可以在项目中使用了!

格式化时间日期

Hutool可以很方便的将一些固定格式的字符串转化为Date对象:

  • yyyy-MM-dd hh:mm:ss
  • yyyy-MM-dd
  • hh:mm:ss
  • yyyy-MM-dd hh:mm

将这些字符串转为Date对象使用DateUtil.parse()方法。同时也可以转换为指定格式的Date对象:

String dateTime1="2018-02-18 20:53:45";
String dateTime2="2018-02-18";
String dateTime3="20:53:45";
String dateTime4="2018-02-18 20:53";//将不同的格式转换为Date对象
Date date1=DateUtil.parse(dateTime1);  
System.out.println("date1:"+date1.toString());
Date date2=DateUtil.parse(dateTime2);
System.out.println("date2:"+date2.toString());
Date date3=DateUtil.parse(dateTime3);
System.out.println("date3:"+date3.toString());
Date date4=DateUtil.parse(dateTime4);
System.out.println("date4:"+date4.toString());//使用DateUtil.parse(String,String):Date 转换为指定格式的Date对象
Date date5=DateUtil.parse(dateTime1, "yyyy-MM-dd");
System.out.println("date5:"+date5.toString());

 

一般更常用的是我们需要将日期时间格式化输出,Hutool提供了一些方法实现:

  • 使用DateUtil.formatDateTime(Date date):String 将返回“yyyy-MM-dd hh:mm:ss”格式字符串
  • 使用DateUtil.formatDate(Date date):String 将返回“yyyy-MM-dd“格式字符串
  • 使用DateUtil.formatTime(Date date):String将返回“hh:mm:ss“格式字符串
  • 使用DateUtil.format(Date,String):String 将返回指定格式的字符串

开始和结束时间

Hutool可以很方便的获得某天/某月/某年的开始时刻和结束时刻:

beginOfDay(Date):Date

一天开始时刻

endOfDay(Date):Date

一天结束时刻

beginOfMonth(Date):Date

endOfMonth(Date):Date

beginOfYear(Date):Date

endOfYear(Date):Date

时间间隔

Hutool可以方便的计算时间间隔,使用DateUtil.between(Date begin,Date end,DateUnit):long计算间隔,方法有三个参数,前两个分别是开始时间和结束时间,第三个参数是DateUnit的枚举,表示差值以什么为单位。

DateUnit的取值可以是DateUnit.DAY(天),DateUnit.HOUR(小时),DateUnit.WEEK(周),DateUnit.SECOND(秒),DateUnit.MINUTE(分钟);

我们也可以将差值转为指定具体的格式,比如 XX天XX小时XX分钟XX秒 这样的格式,可以使用DateUtil.formatBetween(Date begin,Date end,Level):String 方法,有三个参数,前两个依然是开始和结束时间,第三个参数表示精确度,比如Level.SECOND表示精确到秒,即XX天XX小时XX分钟XX秒的格式。

计算年龄

用了Hutool可以瞬间计算年龄,你还需要担心什么虚岁周岁吗?不需要,Hutool说多少就是多少。我们可以使用如下方法:

年龄

age(Date begin,Date end):int

出生和去世日期计算年龄

ageOfNow(String birthday):int

计算到当前日期的年龄

ageOfNow(Date birthday):int

计算到当前日期的年龄

判断闰年

使用DateUtil.isLeapYear(in year):boolean判断是否为闰年。

 

DateTime

了解了DateUtil,再来看DateTime应该是很简单的,因为DateTime里面的大多数方法和DateUtil是类似的。DateTime类继承自java.util.Date,完全可以替代Date的使用并且还有其他的实用方法!何乐而不为!

首先来了解一下DateTime的构造方法:

  • 方法一:使用new

DateTime dt=new DateTime();   //创建当前时刻

DateTime dt=new DateTime(Date date);   //使用Date对象构造

DateTime dt=new DateTime(long timeMillis);   //使用毫秒数构造

 

  • 方法二:使用of()方法

DateTime dt=DateTime.of();

 

  • 使用now()方法

DateTime dt=DateTime.now();          //创建当前时刻

 

DateTime里面还有两个非常实用的方法,就是before(Date when):boolean 和 after(Date when):boolean,它们可以判断时间的先后。

 

DatePattern

最后了解一下DatePattern类,这个类主要是提供了一些指定的时间日期格式(都是String类型),包括地区的区别表示:

格式化模板

DatePattern.CHINESE_DATE_PATTERN

yyyy年MM月dd日

DatePattern.NORM_DATE_PATTERN

yyyy-MM-dd

DatePattern.NORM_TIME_PATTERN

HH:mm:ss

DatePattern.NORM_DATETIME_PATTERN

yyyy-MM-dd HH:mm:ss

DatePattern.UTC_PATTERN

yyyy-MM-dd'T'HH:mm:ss'Z'

DatePattern.PURE_DATE_PATTERN

yyyyMMdd

DatePattern.PURE_TIME_PATTERN

HHmmss

DatePattern.PURE_DATETIME_PATTERN

yyyyMMddHHmmss

 

好了,Hutool的第一个工具就了解到这里,我也是在慢慢学习这个工具,以后会持续和大家分享Hutool的使用指南!

正值开学季,在这里各位学生学业有成!已经工作的小伙伴们,工作顺利,新年长新发!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这篇关于Hutool使用指南(一):时间日期工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871477

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

超强的截图工具:PixPin

你是否还在为寻找一款功能强大、操作简便的截图工具而烦恼?市面上那么多工具,常常让人无从选择。今天,想给大家安利一款神器——PixPin,一款真正解放双手的截图工具。 想象一下,你只需要按下快捷键就能轻松完成多种截图任务,还能快速编辑、标注甚至保存多种格式的图片。这款工具能满足这些需求吗? PixPin不仅支持全屏、窗口、区域截图等基础功能,它还可以进行延时截图,让你捕捉到每个关键画面。不仅如此

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06

PR曲线——一个更敏感的性能评估工具

在不均衡数据集的情况下,精确率-召回率(Precision-Recall, PR)曲线是一种非常有用的工具,因为它提供了比传统的ROC曲线更准确的性能评估。以下是PR曲线在不均衡数据情况下的一些作用: 关注少数类:在不均衡数据集中,少数类的样本数量远少于多数类。PR曲线通过关注少数类(通常是正类)的性能来弥补这一点,因为它直接评估模型在识别正类方面的能力。 精确率与召回率的平衡:精确率(Pr

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)

husky 工具配置代码检查工作流:提交代码至仓库前做代码检查

提示:这篇博客以我前两篇博客作为先修知识,请大家先去看看我前两篇博客 博客指路:前端 ESlint 代码规范及修复代码规范错误-CSDN博客前端 Vue3 项目开发—— ESLint & prettier 配置代码风格-CSDN博客 husky 工具配置代码检查工作流的作用 在工作中,我们经常需要将写好的代码提交至代码仓库 但是由于程序员疏忽而将不规范的代码提交至仓库,显然是不合理的 所

10个好用的AI写作工具【亲测免费】

1. 光速写作 传送入口:http://u3v.cn/6hXWYa AI打工神器,一键生成文章&ppt 2. 讯飞写作 传送入口:http://m6z.cn/5ODiSw 3. 讯飞绘文 传送入口:https://turbodesk.xfyun.cn/?channelid=gj3 4. AI排版助手 传送入口:http://m6z.cn/6ppnPn 5. Kim