/**
* @return java.util.Date
* @author xianghu.wang
* @date 2019/3/9
* @param: date
* @description 获取指定时间所在月的第一周的第一天
*/
public static Date getFirstDayOfWeekAndMonth(Date date) {
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
// 月的第一天
LocalDateTime firstOfMonth = localDateTime;
// 月的第一周的第一天
LocalDateTime firstOfWeekAndMonth = firstOfMonth;
int dayOfMonth = localDateTime.getDayOfMonth();
// 如果不是当月的第一天,向前推到月的第一天
if (dayOfMonth != 1) {
firstOfMonth = localDateTime.minusDays(dayOfMonth - 1);
}
// 如果不是周一,向后推到周一
if (firstOfMonth.getDayOfWeek().getValue() != 1) {
firstOfWeekAndMonth = firstOfMonth.plusDays(8 - firstOfMonth.getDayOfWeek().getValue());
}
Instant firstOfWeekAndMonthInstant = firstOfWeekAndMonth.atZone(zone).toInstant();
return Date.from(firstOfWeekAndMonthInstant);
}
/**
* @return java.util.Date
* @author xianghu.wang
* @date 2019/3/10
* @param: date
* @description 获取月的最后一天
*/
public static Date getLastDayOfMonth(Date date) {
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime now = LocalDateTime.ofInstant(instant, zone);
// 月的第后一天(假装该天是月的最后一天)
LocalDateTime lastOfMonth = now;
// 是否是闰年
boolean leapYear = Year.of(lastOfMonth.getYear()).isLeap();
// 该月的长度
final int length = lastOfMonth.getMonth().length(leapYear);
// 如果不是,向后推到最后一天
if (lastOfMonth.getDayOfMonth() != length) {
lastOfMonth = lastOfMonth.plusDays(length - lastOfMonth.getDayOfMonth());
}
Instant lastOfMonthInstant = lastOfMonth.atZone(zone).toInstant();
return Date.from(lastOfMonthInstant);
}
/**
* @return long
* @author xianghu.wang
* @date 2019/3/11
* @param: date
* @description 获取指定日期当日零点时间戳 13位
*/
public static long getZeroTimeOfDay(Date date) {
//ONE_DAY_MILLIONS 建议在工具类中定义成常量
long ONE_DAY_MILLIONS = 24 * 60 * 60 * 1000;
long redundant = date.getTime() % ONE_DAY_MILLIONS + TimeZone.getDefault().getRawOffset();
return date.getTime() - redundant;
}
时间工具:获取《月的第一周的第一天》、《月的最后一天》、《当日零点时间戳》
猜你喜欢
转载自blog.csdn.net/Mathieu66/article/details/88376185
今日推荐
周排行