/**
* 获取第二天凌晨12点的毫秒数
*/
public static long getTomorrowBeginMilliSecond() {
long now = System.currentTimeMillis() / 1000L;
long daySecond = 60 * 60 * 24;
return (now - (now + 8 * 3600) % daySecond + daySecond) * 1000;
}
/**
* 获取当天凌晨时间毫秒数
*/
public static long getTodayBeginMilliSecond() {
long now = System.currentTimeMillis() / 1000L;
long daySecond = 60 * 60 * 24;
return (now - (now + 8 * 3600) % daySecond) * 1000;
}
/**
* 获取当天凌晨日期时间
*/
public static Date getTodayBegin() {
return new Date(getTodayBeginMilliSecond());
}
/**
* 第二天凌晨时间
*/
public static Date getTodayEnd() {
return new Date(getTomorrowBeginMilliSecond());
}
/**
* 将毫秒转换为小时
*
* @param milliseconds 毫秒数
* @return 小时
*/
public static double getHours(long milliseconds) {
return milliseconds / (1000 * 3600.0);
}
/**
* 获得本周一0点时间
*/
public static Date getTimesWeekBegin() {
Calendar cal = Calendar.getInstance();
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
return cal.getTime();
}
/**
* 获得本周日24点时间
*/
public static Date getTimesWeekEnd() {
Calendar cal = Calendar.getInstance();
cal.setTime(getTimesWeekBegin());
cal.add(Calendar.DAY_OF_WEEK, 7);
return cal.getTime();
}
/**
* 得到上个月的第一天
*/
public static Date getLastMonthFirstDay() {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
c.set(Calendar.DAY_OF_MONTH, 1);//设置为1号,当前日期既为本月第一天
//将小时至0
c.set(Calendar.HOUR_OF_DAY, 0);
//将分钟至0
c.set(Calendar.MINUTE, 0);
//将秒至0
c.set(Calendar.SECOND, 0);
//将毫秒至0
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
/**
* 得到本月的第一天
*/
public static Date getMonthFirstDay() {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 0);
c.set(Calendar.DAY_OF_MONTH, 1);//设置为1号,当前日期既为本月第一天
//将小时至0
c.set(Calendar.HOUR_OF_DAY, 0);
//将分钟至0
c.set(Calendar.MINUTE, 0);
//将秒至0
c.set(Calendar.SECOND, 0);
//将毫秒至0
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
/**
* 得到本月的最后一天
*/
public static Date getMonthLastDay() {
//获取当前月最后一天
Calendar ca = Calendar.getInstance();
ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
//将小时至0
ca.set(Calendar.HOUR_OF_DAY, 0);
//将分钟至0
ca.set(Calendar.MINUTE, 0);
//将秒至0
ca.set(Calendar.SECOND,0);
//将毫秒至0
ca.set(Calendar.MILLISECOND, 0);
return ca.getTime();
}
/**
* 得到下个月的第一天
*/
public static Date getNextMonthFirstDay() {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 1);
c.set(Calendar.DAY_OF_MONTH, 1);//设置为1号,当前日期既为本月第一天
//将小时至0
c.set(Calendar.HOUR_OF_DAY, 0);
//将分钟至0
c.set(Calendar.MINUTE, 0);
//将秒至0
c.set(Calendar.SECOND, 0);
//将毫秒至0
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
/**
* 得到一个月前的凌晨时间
*/
public static Date getMonthBefore() {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.MONTH, -1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
return c.getTime();
}
public static Date getDateBegin(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
public static Date getDateEnd(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
/**
* 获取今年开始的第一天
*/
public static Date getYearFirstDay() {
Calendar c = Calendar.getInstance();
c.set(Calendar.MONTH, 0);
c.set(Calendar.DAY_OF_MONTH, 1);//设置为1号,当前日期既为本月第一天
//将小时至0
c.set(Calendar.HOUR_OF_DAY, 0);
//将分钟至0
c.set(Calendar.MINUTE, 0);
//将秒至0
c.set(Calendar.SECOND, 0);
//将毫秒至0
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
/**
* 获取某段时这里写代码片间内的所有日期
*
* @param dBegin 开始日期
* @param dEnd 结束日期
* @return 起止日期的每一天
*/
public static List<Date> getDayBetween(Date dBegin, Date dEnd) {
List<Date> lDate = new ArrayList<>();
lDate.add(dBegin);
Calendar calBegin = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calBegin.setTime(dBegin);
Calendar calEnd = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calEnd.setTime(dEnd);
// 测试此日期是否在指定日期之后
while (dEnd.after(calBegin.getTime())) {
// 根据日历的规则,为给定的日历字段添加或减去指定的时间量
calBegin.add(Calendar.DAY_OF_MONTH, 1);
lDate.add(calBegin.getTime());
}
return lDate;
}
/**
* 获取某段时这里写代码片间内的所有格式化的日期
*
* @param dateBegin 开始日期
* @param dateEnd 结束日期
* @return 起止日期的每一天
*/
public static List<String> getDayBetweenFormat(Date dateBegin, Date dateEnd) {
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd");
List<Date> dayBetween = getDayBetween(dateBegin, dateEnd);
List<String> dayFormatBetween = new ArrayList<>();
for (Date date : dayBetween) {
String dateStr = dateFormat.format(date);
dayFormatBetween.add(dateStr);
}
return dayFormatBetween;
}
public static Date getYesterdayBegin() {
//当前时间
Date dNow = new Date();
//得到日历
Calendar calendar = Calendar.getInstance();
//把当前时间赋给日历
calendar.setTime(dNow);
//设置为前一天
calendar.add(Calendar.DAY_OF_MONTH, -1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
//得到前一天的时间
return calendar.getTime();
}
}
java日期工具类
最新推荐文章于 2022-08-09 11:49:50 发布