背景:
DateUtil整理,便于使用。
注:其中大部分功能jdk 自带或使用第三方工具类即可。
推荐使用hutool(其还有很多方便使用的工具类):
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.7</version>
</dependency>
特殊需要使用的整理(持续更新…):
/**
* 时间工具类
*
* @since 2021/1/28
*/
public class DateUtils {
/**
* 获取当月第一天(hutool有)
* @since 2021-01:23 15:16:36
*/
public static Date getMonthFirstDay() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.add(Calendar.MONTH, 0);
return calendar.getTime();
}
/**
* 获取当月最后一天(hutool有)
* @since 2021-01:23 15:16:36
*/
public static Date getMonthLastDay() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.DAY_OF_MONTH, 0);
calendar.add(Calendar.MONTH, 1);
return calendar.getTime();
}
/**
* 获取某月最后一天(hutool有)
* @since 2021-01:23 15:16:36
*/
public static Date getMonthLastDayByDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, 0);
calendar.add(Calendar.MONTH, 1);
return calendar.getTime();
}
/**
* 获得当天最小时间(hutool有)
*
* @param date date
* @since 2021-01:13 18:33:09
*/
public static Date getStartOfDay(Date date) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()),
ZoneId.systemDefault());
LocalDateTime startOfDay = localDateTime.with(LocalTime.MIN);
return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());
}
/**
* 获得当天最大时间(hutool有,但是这是23:59.59.x,x是大于0的数,保存到mysql后会,时间会变为第二天00:00:00)
*
* @param date date
* @since 2021-01:13 18:33:09
*/
public static Date getEndOfDay(Date date) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()),
ZoneId.systemDefault());
// withNano(0)的设置是避免mysql存储时变为00:00:00问题
LocalDateTime endOfDay = localDateTime.with(LocalTime.MAX).withNano(0);
return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
}
}