随笔 - 755  文章 - 0 评论 - 33 阅读 - 136万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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


感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接
posted on   周文豪  阅读(3816)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示