文章23 | 阅读 31826 | 点赞0
包含但不限于获取年,季度,月,周,日,时,分,秒,毫秒的开始时间和结束时间
此博文的依据:hutool-5.6.5版本源码
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>5.6.5</version>
</dependency>
方法 | 描述 |
---|---|
cn.hutool.core.date.DateUtil.truncate(java.util.Date, cn.hutool.core.date.DateField) | 修改日期为某个时间字段起始时间 |
cn.hutool.core.date.DateUtil.round(java.util.Date, cn.hutool.core.date.DateField) | 修改日期为某个时间字段四舍五入时间 |
cn.hutool.core.date.DateUtil.ceiling(java.util.Date, cn.hutool.core.date.DateField) | 修改日期为某个时间字段结束时间 |
cn.hutool.core.date.DateUtil.beginOfSecond(java.util.Date) | 获取秒级别的开始时间,即忽略毫秒部分 |
cn.hutool.core.date.DateUtil.endOfSecond(java.util.Date) | 获取秒级别的结束时间,即毫秒设置为999 |
cn.hutool.core.date.DateUtil.beginOfHour(java.util.Date) | 获取某小时的开始时间 |
cn.hutool.core.date.DateUtil.endOfHour(java.util.Date) | 获取某小时的结束时间 |
cn.hutool.core.date.DateUtil.beginOfMinute(java.util.Date) | 获取某分钟的开始时间 |
cn.hutool.core.date.DateUtil.endOfMinute(java.util.Date) | 获取某分钟的结束时间 |
cn.hutool.core.date.DateUtil.beginOfDay(java.util.Date) | 获取某天的开始时间 |
cn.hutool.core.date.DateUtil.endOfDay(java.util.Date) | 获取某天的结束时间 |
cn.hutool.core.date.DateUtil.beginOfWeek(java.util.Date) | 获取某周的开始时间,周一定为一周的开始时间 |
cn.hutool.core.date.DateUtil.beginOfWeek(java.util.Date, boolean) | 获取某周的开始时间 |
cn.hutool.core.date.DateUtil.endOfWeek(java.util.Date) | 获取某周的结束时间,周日定为一周的结束 |
cn.hutool.core.date.DateUtil.endOfWeek(java.util.Date, boolean) | 获取某周的结束时间 |
cn.hutool.core.date.DateUtil.beginOfMonth(java.util.Date) | 获取某月的开始时间 |
cn.hutool.core.date.DateUtil.endOfMonth(java.util.Date) | 获取某月的结束时间 |
cn.hutool.core.date.DateUtil.beginOfQuarter(java.util.Date) | 获取某季度的开始时间 |
cn.hutool.core.date.DateUtil.endOfQuarter(java.util.Date) | 获取某季度的结束时间 |
cn.hutool.core.date.DateUtil.beginOfYear(java.util.Date) | 获取某年的开始时间 |
cn.hutool.core.date.DateUtil.endOfYear(java.util.Date) | 获取某年的结束时间 |
cn.hutool.core.date.DateUtil.yesterday() | 昨天 |
cn.hutool.core.date.DateUtil.tomorrow() | 明天 |
cn.hutool.core.date.DateUtil.lastWeek() | 上周 |
cn.hutool.core.date.DateUtil.nextWeek() | 下周 |
cn.hutool.core.date.DateUtil.lastMonth() | 上个月 |
cn.hutool.core.date.DateUtil.nextMonth() | 下个月 |
cn.hutool.core.date.DateUtil.offsetMillisecond(java.util.Date, int) | 偏移毫秒数 |
cn.hutool.core.date.DateUtil.offsetSecond(java.util.Date, int) | 偏移秒数 |
cn.hutool.core.date.DateUtil.offsetMinute(java.util.Date, int) | 偏移分钟 |
cn.hutool.core.date.DateUtil.offsetHour(java.util.Date, int) | 偏移小时 |
cn.hutool.core.date.DateUtil.offsetDay(java.util.Date, int) | 偏移天 |
cn.hutool.core.date.DateUtil.offsetWeek(java.util.Date, int) | 偏移周 |
cn.hutool.core.date.DateUtil.offsetMonth(java.util.Date, int) | 偏移月 |
cn.hutool.core.date.DateUtil.offset(java.util.Date, cn.hutool.core.date.DateField, int) | 获取指定日期偏移指定时间后的时间,生成的偏移日期不影响原日期 |
修改日期为某个时间字段起始时间
4.5.7
参数名 | 描述 |
---|---|
Date date | date {@link Date} |
DateField dateField | dateField 时间字段 |
{@link DateTime}
String dateStr2 = "2020-02-29 12:59:34";
Date date2 = DateUtil.parse(dateStr2);
final DateTime dateTime = DateUtil.truncate(date2, DateField.MINUTE);
Assert.assertEquals("2020-02-29 12:59:00", dateTime.toString());
链接:待补充
修改日期为某个时间字段四舍五入时间
4.5.7
参数名 | 描述 |
---|---|
Date date | date {@link Date} |
DateField dateField | dateField 时间字段 |
{@link DateTime}
String dateStr2 = "2020-02-29 12:59:34";
Date date2 = DateUtil.parse(dateStr2);
DateTime dateTime = DateUtil.round(date2, DateField.MINUTE);
Assert.assertEquals("2020-02-29 12:59:59", dateTime.toString());
dateStr2 = "2020-02-29 12:05:29";
date2 = DateUtil.parse(dateStr2);
dateTime = DateUtil.round(date2, DateField.MINUTE);
Assert.assertEquals("2020-02-29 12:05:00", dateTime.toString());
链接:待补充
修改日期为某个时间字段结束时间
4.5.7
参数名 | 描述 |
---|---|
Date date | date {@link Date} |
DateField dateField | dateField 时间字段 |
{@link DateTime}
String dateStr2 = "2020-02-29 12:59:34";
Date date2 = DateUtil.parse(dateStr2);
DateTime dateTime = DateUtil.ceiling(date2, DateField.MINUTE);
Assert.assertEquals("2020-02-29 12:59:59", dateTime.toString());
链接:待补充
获取秒级别的开始时间,即忽略毫秒部分
4.6.2
参数名 | 描述 |
---|---|
Date date | date 日期 |
{@link DateTime}
String dateStr2 = "2021-05-16 22:50:34.111";
Date date2 = DateUtil.parse(dateStr2);
DateTime dateTime = DateUtil.beginOfSecond(date2);
Assert.assertEquals("2021-05-16 22:50:34", dateTime.toString());
链接:待补充
获取秒级别的结束时间,即毫秒设置为999
4.6.2
参数名 | 描述 |
---|---|
Date date | date 日期 |
{@link DateTime}
String dateStr2 = "2021-05-16 22:50:34.111";
DateTime date2 = DateUtil.parse(dateStr2,"yyyy-MM-dd HH:mm:ss.SSS");
int millisecond = DateUtil.millisecond(date2);
DateTime dateTime = DateUtil.endOfSecond(date2);
Assert.assertEquals(999, DateUtil.millisecond(dateTime));
链接:待补充
获取某小时的开始时间
参数名 | 描述 |
---|---|
Date date | date 日期 |
{@link DateTime}
String dateStr2 = "2021-05-16 22:50:34.111";
DateTime date2 = DateUtil.parse(dateStr2,"yyyy-MM-dd HH:mm:ss.SSS");
DateTime dateTime = DateUtil.beginOfHour(date2);
System.out.println(dateTime);
Assert.assertEquals("2021-05-16 22:00:00", dateTime.toString());
链接:待补充
获取某小时的结束时间
参数名 | 描述 |
---|---|
Date date | date 日期 |
{@link DateTime}
String dateStr2 = "2021-05-16 22:50:34.111";
DateTime date2 = DateUtil.parse(dateStr2,"yyyy-MM-dd HH:mm:ss.SSS");
DateTime dateTime = DateUtil.endOfHour(date2);
Assert.assertEquals("2021-05-16 22:59:59", dateTime.toString());
链接:待补充
获取某分钟的开始时间
参数名 | 描述 |
---|---|
Date date | date 日期 |
{@link DateTime}
String dateStr2 = "2021-05-16 22:50:34.111";
DateTime date2 = DateUtil.parse(dateStr2,"yyyy-MM-dd HH:mm:ss.SSS");
DateTime dateTime = DateUtil.beginOfMinute(date2);
Assert.assertEquals("2021-05-16 22:50:00", dateTime.toString());
链接:待补充
获取某分钟的结束时间
参数名 | 描述 |
---|---|
Date date | date 日期 |
{@link DateTime}
String dateStr2 = "2021-05-16 22:50:34.111";
DateTime date2 = DateUtil.parse(dateStr2,"yyyy-MM-dd HH:mm:ss.SSS");
DateTime dateTime = DateUtil.endOfMinute(date2);
Assert.assertEquals("2021-05-16 22:50:59", dateTime.toString());
链接:待补充
获取某天的开始时间
参数名 | 描述 |
---|---|
Date date | date 日期 |
{@link DateTime}
String dateStr = "2017-03-01 00:33:23";
Date date = DateUtil.parse(dateStr);
// 一天的开始
Date beginOfDay = DateUtil.beginOfDay(date);
Assert.assertEquals("2017-03-01 00:00:00", beginOfDay.toString());
// 一天的结束
Date endOfDay = DateUtil.endOfDay(date);
Assert.assertEquals("2017-03-01 23:59:59", endOfDay.toString());
链接:待补充
获取某天的结束时间
参数名 | 描述 |
---|---|
Date date | date 日期 |
{@link DateTime}
String dateStr = "2017-03-01 00:33:23";
Date date = DateUtil.parse(dateStr);
// 一天的开始
Date beginOfDay = DateUtil.beginOfDay(date);
Assert.assertEquals("2017-03-01 00:00:00", beginOfDay.toString());
// 一天的结束
Date endOfDay = DateUtil.endOfDay(date);
Assert.assertEquals("2017-03-01 23:59:59", endOfDay.toString());
链接:待补充
获取某周的开始时间,周一定为一周的开始时间
参数名 | 描述 |
---|---|
Date date | date 日期 |
{@link DateTime}
String dateStr = "2017-03-01 22:33:23";
DateTime date = DateUtil.parse(dateStr);
Objects.requireNonNull(date).setFirstDayOfWeek(Week.MONDAY);
// 一周的开始
Date beginOfWeek = DateUtil.beginOfWeek(date);
Assert.assertEquals("2017-02-27 00:00:00", beginOfWeek.toString());
// 一周的结束
Date endOfWeek = DateUtil.endOfWeek(date);
Assert.assertEquals("2017-03-05 23:59:59", endOfWeek.toString());
Calendar calendar = DateUtil.calendar(date);
// 一周的开始
Calendar begin = DateUtil.beginOfWeek(calendar);
Assert.assertEquals("2017-02-27 00:00:00", DateUtil.date(begin).toString());
// 一周的结束
Calendar end = DateUtil.endOfWeek(calendar);
Assert.assertEquals("2017-03-05 23:59:59", DateUtil.date(end).toString());
链接:待补充
获取某周的开始时间
5.4.0
参数名 | 描述 |
---|---|
Date date | date 日期 |
boolean isMondayAsFirstDay | isMondayAsFirstDay 是否周一做为一周的第一天(false表示周日做为第一天) |
{@link DateTime}
String beginStr = "2020-03-11";
DateTime date = DateUtil.parseDate(beginStr);
Calendar calendar = date.toCalendar();
final Calendar begin = DateUtil.beginOfWeek(calendar, false);
Assert.assertEquals("2020-03-08 00:00:00", DateUtil.date(begin).toString());
Calendar calendar2 = date.toCalendar();
final Calendar end = DateUtil.endOfWeek(calendar2, false);
Assert.assertEquals("2020-03-14 23:59:59", DateUtil.date(end).toString());
链接:待补充
获取某周的结束时间,周日定为一周的结束
参数名 | 描述 |
---|---|
Date date | date 日期 |
{@link DateTime}
String dateStr = "2017-03-01 22:33:23";
DateTime date = DateUtil.parse(dateStr);
Objects.requireNonNull(date).setFirstDayOfWeek(Week.MONDAY);
// 一周的开始
Date beginOfWeek = DateUtil.beginOfWeek(date);
Assert.assertEquals("2017-02-27 00:00:00", beginOfWeek.toString());
// 一周的结束
Date endOfWeek = DateUtil.endOfWeek(date);
Assert.assertEquals("2017-03-05 23:59:59", endOfWeek.toString());
Calendar calendar = DateUtil.calendar(date);
// 一周的开始
Calendar begin = DateUtil.beginOfWeek(calendar);
Assert.assertEquals("2017-02-27 00:00:00", DateUtil.date(begin).toString());
// 一周的结束
Calendar end = DateUtil.endOfWeek(calendar);
Assert.assertEquals("2017-03-05 23:59:59", DateUtil.date(end).toString());
链接:待补充
获取某周的结束时间
5.4.0
参数名 | 描述 |
---|---|
Date date | date 日期 |
boolean isSundayAsLastDay | isSundayAsLastDay 是否周日做为一周的最后一天(false表示周六做为最后一天) |
{@link DateTime}
String beginStr = "2020-03-11";
DateTime date = DateUtil.parseDate(beginStr);
Calendar calendar = date.toCalendar();
final Calendar begin = DateUtil.beginOfWeek(calendar, false);
Assert.assertEquals("2020-03-08 00:00:00", DateUtil.date(begin).toString());
Calendar calendar2 = date.toCalendar();
final Calendar end = DateUtil.endOfWeek(calendar2, false);
Assert.assertEquals("2020-03-14 23:59:59", DateUtil.date(end).toString());
链接:待补充
获取某月的开始时间
参数名 | 描述 |
---|---|
Date date | date 日期 |
{@link DateTime}
String dateStr2 = "2021-05-16 22:50:34.111";
DateTime date2 = DateUtil.parse(dateStr2,"yyyy-MM-dd HH:mm:ss.SSS");
DateTime dateTime = DateUtil.beginOfMonth(date2);
Assert.assertEquals("2021-05-01 00:00:00", dateTime.toString());
链接:待补充
获取某月的结束时间
参数名 | 描述 |
---|---|
Date date | date 日期 |
{@link DateTime}
String dateStr2 = "2021-05-16 22:50:34.111";
DateTime date2 = DateUtil.parse(dateStr2,"yyyy-MM-dd HH:mm:ss.SSS");
DateTime dateTime = DateUtil.endOfMonth(date2);
Assert.assertEquals("2021-05-31 23:59:59", dateTime.toString());
链接:待补充
获取某季度的开始时间
参数名 | 描述 |
---|---|
Date date | date 日期 |
{@link DateTime}
DateTime dateTime = new DateTime("2021-05-16 23:34:23", DatePattern.NORM_DATETIME_FORMAT);
// 精确到毫秒
DateTime beginTime = new DateTime("2021-04-01 00:00:00.000", DatePattern.NORM_DATETIME_MS_FORMAT);
dateTime = DateUtil.beginOfQuarter(dateTime);
Assert.assertEquals(beginTime, dateTime);
链接:待补充
获取某季度的结束时间
参数名 | 描述 |
---|---|
Date date | date 日期 |
{@link DateTime}
Date date = DateUtil.endOfQuarter(
DateUtil.parse("2020-05-31 00:00:00"));
Assert.assertEquals("2020-06-30 23:59:59", DateUtil.format(date,"yyyy-MM-dd HH:mm:ss"));
链接:待补充
获取某年的开始时间
参数名 | 描述 |
---|---|
Date date | date 日期 |
{@link DateTime}
DateTime date = DateUtil.date();
date.setField(DateField.YEAR, 2019);
DateTime endOfYear = DateUtil.beginOfYear(date);
Assert.assertEquals("2019-01-01 00:00:00", endOfYear.toString());
链接:待补充
获取某年的结束时间
参数名 | 描述 |
---|---|
Date date | date 日期 |
{@link DateTime}
DateTime date = DateUtil.date();
date.setField(DateField.YEAR, 2019);
DateTime endOfYear = DateUtil.endOfYear(date);
Assert.assertEquals("2019-12-31 23:59:59", endOfYear.toString());
链接:待补充
昨天
参数名 | 描述 |
---|
昨天
//昨天
DateTime dateTime = DateUtil.yesterday();
System.out.println(dateTime);
Assert.assertNotNull(dateTime);
链接:待补充
明天
3.0.1
参数名 | 描述 |
---|
明天
//明天
DateTime dateTime = DateUtil.tomorrow();
System.out.println(dateTime);
Assert.assertNotNull(dateTime);
链接:待补充
上周
参数名 | 描述 |
---|
上周
//上周
DateTime dateTime = DateUtil.lastWeek();
System.out.println(dateTime);
Assert.assertNotNull(dateTime);
链接:待补充
下周
3.0.1
参数名 | 描述 |
---|
下周
//下周
DateTime dateTime = DateUtil.nextWeek();
System.out.println(dateTime);
Assert.assertNotNull(dateTime);
链接:待补充
上个月
参数名 | 描述 |
---|
上个月
//上个月
DateTime dateTime = DateUtil.lastMonth();
System.out.println(dateTime);
Assert.assertNotNull(dateTime);
链接:待补充
下个月
3.0.1
参数名 | 描述 |
---|
下个月
//下个月
DateTime dateTime = DateUtil.nextMonth();
System.out.println(dateTime);
Assert.assertNotNull(dateTime);
链接:待补充
偏移毫秒数
参数名 | 描述 |
---|---|
Date date | date 日期 |
int offset | offset 偏移毫秒数,正数向未来偏移,负数向历史偏移 |
偏移后的日期
//偏移毫秒数
String dateStr2 = "2021-05-16 22:50:34.111";
DateTime date2 = DateUtil.parse(dateStr2);
DateTime dateTime = DateUtil.offsetMillisecond(date2,1);
int millisecond = DateUtil.millisecond(dateTime);
Assert.assertEquals(112, millisecond);
dateTime = DateUtil.offsetMillisecond(date2,-1);
millisecond = DateUtil.millisecond(dateTime);
Assert.assertEquals(110, millisecond);
链接:待补充
偏移秒数
参数名 | 描述 |
---|---|
Date date | date 日期 |
int offset | offset 偏移秒数,正数向未来偏移,负数向历史偏移 |
偏移后的日期
//偏移秒数
String dateStr2 = "2021-05-16 22:50:34.111";
DateTime date2 = DateUtil.parse(dateStr2);
DateTime dateTime = DateUtil.offsetSecond(date2,1);
int second = DateUtil.second(dateTime);
Assert.assertEquals(35, second);
dateTime = DateUtil.offsetSecond(date2,-1);
second = DateUtil.second(dateTime);
Assert.assertEquals(33, second);
链接:待补充
偏移分钟
参数名 | 描述 |
---|---|
Date date | date 日期 |
int offset | offset 偏移分钟数,正数向未来偏移,负数向历史偏移 |
偏移后的日期
//偏移分钟
String dateStr2 = "2021-05-16 22:50:34.111";
DateTime date2 = DateUtil.parse(dateStr2);
DateTime dateTime = DateUtil.offsetMinute(date2,1);
int minute = DateUtil.minute(dateTime);
Assert.assertEquals(51, minute);
dateTime = DateUtil.offsetMinute(date2,-1);
minute = DateUtil.minute(dateTime);
Assert.assertEquals(49, minute);
链接:待补充
偏移小时
参数名 | 描述 |
---|---|
Date date | date 日期 |
int offset | offset 偏移小时数,正数向未来偏移,负数向历史偏移 |
偏移后的日期
//偏移分钟
String dateStr2 = "2021-05-16 22:50:34.111";
DateTime date2 = DateUtil.parse(dateStr2);
DateTime dateTime = DateUtil.offsetHour(date2,1);
int hour = DateUtil.hour(dateTime,true);
Assert.assertEquals(23, hour);
dateTime = DateUtil.offsetHour(date2,-1);
hour = DateUtil.hour(dateTime,true);
Assert.assertEquals(21, hour);
链接:待补充
偏移天
参数名 | 描述 |
---|---|
Date date | date 日期 |
int offset | offset 偏移天数,正数向未来偏移,负数向历史偏移 |
偏移后的日期
//偏移天
String dateStr2 = "2021-05-16 22:50:34";
DateTime date2 = DateUtil.parse(dateStr2);
DateTime dateTime = DateUtil.offsetDay(date2,1);
Assert.assertEquals("2021-05-17 22:50:34", dateTime.toString());
dateTime = DateUtil.offsetDay(date2,-1);
Assert.assertEquals("2021-05-15 22:50:34", dateTime.toString());
链接:待补充
偏移周
参数名 | 描述 |
---|---|
Date date | date 日期 |
int offset | offset 偏移周数,正数向未来偏移,负数向历史偏移 |
偏移后的日期
//偏移周
String dateStr2 = "2021-05-16 22:50:34";
DateTime date2 = DateUtil.parse(dateStr2);
DateTime dateTime = DateUtil.offsetWeek(date2,1);
Assert.assertEquals("2021-05-23 22:50:34", dateTime.toString());
dateTime = DateUtil.offsetWeek(date2,-1);
Assert.assertEquals("2021-05-09 22:50:34", dateTime.toString());
链接:待补充
偏移月
参数名 | 描述 |
---|---|
Date date | date 日期 |
int offset | offset 偏移月数,正数向未来偏移,负数向历史偏移 |
偏移后的日期
//偏移月
String dateStr2 = "2021-05-16 22:50:34";
DateTime date2 = DateUtil.parse(dateStr2);
DateTime dateTime = DateUtil.offsetMonth(date2,1);
Assert.assertEquals("2021-06-16 22:50:34", dateTime.toString());
dateTime = DateUtil.offsetMonth(date2,-1);
Assert.assertEquals("2021-04-16 22:50:34", dateTime.toString());
链接:待补充
获取指定日期偏移指定时间后的时间,生成的偏移日期不影响原日期
参数名 | 描述 |
---|---|
Date date | date 基准日期 |
DateField dateField | dateField 偏移的粒度大小(小时、天、月等){@link DateField} |
int offset | offset 偏移量,正数为向后偏移,负数为向前偏移 |
偏移后的日期
String dateStr = "2017-03-01 22:33:23";
Date date = DateUtil.parse(dateStr);
Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);
Assert.assertEquals("2017-03-03 22:33:23", newDate.toString());
链接:待补充
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://xiaoxuzhu.blog.csdn.net/article/details/117430937
内容来源于网络,如有侵权,请联系作者删除!