6hutool实战:DateUtil(时间工具类)-时间偏移量获取

x33g5p2x  于2021-12-18 转载在 其他  
字(17.7k)|赞(0)|评价(0)|浏览(2878)

用途:时间偏移量获取

使用场景

包含但不限于获取年,季度,月,周,日,时,分,秒,毫秒的开始时间和结束时间

项目引用

此博文的依据: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)获取指定日期偏移指定时间后的时间,生成的偏移日期不影响原日期

方法明细

方法名称:cn.hutool.core.date.DateUtil.truncate(java.util.Date, cn.hutool.core.date.DateField)

方法描述

修改日期为某个时间字段起始时间

支持版本及以上

4.5.7

参数描述:

参数名描述
Date datedate {@link Date}
DateField dateFielddateField 时间字段

返回值:

{@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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.round(java.util.Date, cn.hutool.core.date.DateField)

方法描述

修改日期为某个时间字段四舍五入时间

支持版本及以上

4.5.7

参数描述:

参数名描述
Date datedate {@link Date}
DateField dateFielddateField 时间字段

返回值:

{@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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.ceiling(java.util.Date, cn.hutool.core.date.DateField)

方法描述

修改日期为某个时间字段结束时间

支持版本及以上

4.5.7

参数描述:

参数名描述
Date datedate {@link Date}
DateField dateFielddateField 时间字段

返回值:

{@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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.beginOfSecond(java.util.Date)

方法描述

获取秒级别的开始时间,即忽略毫秒部分

支持版本及以上

4.6.2

参数描述:

参数名描述
Date datedate 日期

返回值:

{@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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.endOfSecond(java.util.Date)

方法描述

获取秒级别的结束时间,即毫秒设置为999

支持版本及以上

4.6.2

参数描述:

参数名描述
Date datedate 日期

返回值:

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

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.beginOfHour(java.util.Date)

方法描述

获取某小时的开始时间

支持版本及以上

参数描述:

参数名描述
Date datedate 日期

返回值:

{@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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.endOfHour(java.util.Date)

方法描述

获取某小时的结束时间

支持版本及以上

参数描述:

参数名描述
Date datedate 日期

返回值:

{@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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.beginOfMinute(java.util.Date)

方法描述

获取某分钟的开始时间

支持版本及以上

参数描述:

参数名描述
Date datedate 日期

返回值:

{@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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.endOfMinute(java.util.Date)

方法描述

获取某分钟的结束时间

支持版本及以上

参数描述:

参数名描述
Date datedate 日期

返回值:

{@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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.beginOfDay(java.util.Date)

方法描述

获取某天的开始时间

支持版本及以上

参数描述:

参数名描述
Date datedate 日期

返回值:

{@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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.endOfDay(java.util.Date)

方法描述

获取某天的结束时间

支持版本及以上

参数描述:

参数名描述
Date datedate 日期

返回值:

{@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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.beginOfWeek(java.util.Date)

方法描述

获取某周的开始时间,周一定为一周的开始时间

支持版本及以上

参数描述:

参数名描述
Date datedate 日期

返回值:

{@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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.beginOfWeek(java.util.Date, boolean)

方法描述

获取某周的开始时间

支持版本及以上

5.4.0

参数描述:

参数名描述
Date datedate 日期
boolean isMondayAsFirstDayisMondayAsFirstDay 是否周一做为一周的第一天(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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.endOfWeek(java.util.Date)

方法描述

获取某周的结束时间,周日定为一周的结束

支持版本及以上

参数描述:

参数名描述
Date datedate 日期

返回值:

{@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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.endOfWeek(java.util.Date, boolean)

方法描述

获取某周的结束时间

支持版本及以上

5.4.0

参数描述:

参数名描述
Date datedate 日期
boolean isSundayAsLastDayisSundayAsLastDay 是否周日做为一周的最后一天(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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.beginOfMonth(java.util.Date)

方法描述

获取某月的开始时间

支持版本及以上

参数描述:

参数名描述
Date datedate 日期

返回值:

{@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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.endOfMonth(java.util.Date)

方法描述

获取某月的结束时间

支持版本及以上

参数描述:

参数名描述
Date datedate 日期

返回值:

{@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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.beginOfQuarter(java.util.Date)

方法描述

获取某季度的开始时间

支持版本及以上

参数描述:

参数名描述
Date datedate 日期

返回值:

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

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.endOfQuarter(java.util.Date)

方法描述

获取某季度的结束时间

支持版本及以上

参数描述:

参数名描述
Date datedate 日期

返回值:

{@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"));

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.beginOfYear(java.util.Date)

方法描述

获取某年的开始时间

支持版本及以上

参数描述:

参数名描述
Date datedate 日期

返回值:

{@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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.endOfYear(java.util.Date)

方法描述

获取某年的结束时间

支持版本及以上

参数描述:

参数名描述
Date datedate 日期

返回值:

{@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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.yesterday()

方法描述

昨天

支持版本及以上

参数描述:

参数名描述

返回值:

昨天

参考案例:

//昨天
		DateTime dateTime = DateUtil.yesterday();
		System.out.println(dateTime);
		Assert.assertNotNull(dateTime);

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.tomorrow()

方法描述

明天

支持版本及以上

3.0.1

参数描述:

参数名描述

返回值:

明天

参考案例:

//明天
		DateTime dateTime = DateUtil.tomorrow();
		System.out.println(dateTime);
		Assert.assertNotNull(dateTime);

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.lastWeek()

方法描述

上周

支持版本及以上

参数描述:

参数名描述

返回值:

上周

参考案例:

//上周
		DateTime dateTime = DateUtil.lastWeek();
		System.out.println(dateTime);
		Assert.assertNotNull(dateTime);

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.nextWeek()

方法描述

下周

支持版本及以上

3.0.1

参数描述:

参数名描述

返回值:

下周

参考案例:

//下周
		DateTime dateTime = DateUtil.nextWeek();
		System.out.println(dateTime);
		Assert.assertNotNull(dateTime);

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.lastMonth()

方法描述

上个月

支持版本及以上

参数描述:

参数名描述

返回值:

上个月

参考案例:

//上个月
		DateTime dateTime = DateUtil.lastMonth();
		System.out.println(dateTime);
		Assert.assertNotNull(dateTime);

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.nextMonth()

方法描述

下个月

支持版本及以上

3.0.1

参数描述:

参数名描述

返回值:

下个月

参考案例:

//下个月
		DateTime dateTime = DateUtil.nextMonth();
		System.out.println(dateTime);
		Assert.assertNotNull(dateTime);

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.offsetMillisecond(java.util.Date, int)

方法描述

偏移毫秒数

支持版本及以上

参数描述:

参数名描述
Date datedate 日期
int offsetoffset 偏移毫秒数,正数向未来偏移,负数向历史偏移

返回值:

偏移后的日期

参考案例:

//偏移毫秒数
		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);

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.offsetSecond(java.util.Date, int)

方法描述

偏移秒数

支持版本及以上

参数描述:

参数名描述
Date datedate 日期
int offsetoffset 偏移秒数,正数向未来偏移,负数向历史偏移

返回值:

偏移后的日期

参考案例:

//偏移秒数
		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);

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.offsetMinute(java.util.Date, int)

方法描述

偏移分钟

支持版本及以上

参数描述:

参数名描述
Date datedate 日期
int offsetoffset 偏移分钟数,正数向未来偏移,负数向历史偏移

返回值:

偏移后的日期

参考案例:

//偏移分钟
		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);

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.offsetHour(java.util.Date, int)

方法描述

偏移小时

支持版本及以上

参数描述:

参数名描述
Date datedate 日期
int offsetoffset 偏移小时数,正数向未来偏移,负数向历史偏移

返回值:

偏移后的日期

参考案例:

//偏移分钟
		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);

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.offsetDay(java.util.Date, int)

方法描述

偏移天

支持版本及以上

参数描述:

参数名描述
Date datedate 日期
int offsetoffset 偏移天数,正数向未来偏移,负数向历史偏移

返回值:

偏移后的日期

参考案例:

//偏移天
		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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.offsetWeek(java.util.Date, int)

方法描述

偏移周

支持版本及以上

参数描述:

参数名描述
Date datedate 日期
int offsetoffset 偏移周数,正数向未来偏移,负数向历史偏移

返回值:

偏移后的日期

参考案例:

//偏移周
		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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.offsetMonth(java.util.Date, int)

方法描述

偏移月

支持版本及以上

参数描述:

参数名描述
Date datedate 日期
int offsetoffset 偏移月数,正数向未来偏移,负数向历史偏移

返回值:

偏移后的日期

参考案例:

//偏移月
		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());

源码解析:

链接:待补充

方法明细

方法名称:cn.hutool.core.date.DateUtil.offset(java.util.Date, cn.hutool.core.date.DateField, int)

方法描述

获取指定日期偏移指定时间后的时间,生成的偏移日期不影响原日期

支持版本及以上

参数描述:

参数名描述
Date datedate 基准日期
DateField dateFielddateField 偏移的粒度大小(小时、天、月等){@link DateField}
int offsetoffset 偏移量,正数为向后偏移,负数为向前偏移

返回值:

偏移后的日期

参考案例:

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

源码解析:

链接:待补充

相关文章