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