在实际项目开发过程中,获取任意时间的起始和结束时间是常用操作,尤其对于统计业务来说,更是必要操作,理解了时间自定义的规律,对于开发人员的效率提升是大有裨益的。
一.获取任意年的起始和结束时间

1.获取任意年的起始时间
public static Date getDateByBeforeYear(Date today, int number) {
Calendar todayEnd = Calendar.getInstance();
todayEnd.setTime(today);
todayEnd.set(Calendar.YEAR, todayEnd.get(Calendar.YEAR) - number);
todayEnd.set(Calendar.MONTH, 0);
todayEnd.set(Calendar.DAY_OF_MONTH, 1);
todayEnd.set(Calendar.HOUR_OF_DAY, 0);
todayEnd.set(Calendar.MINUTE, 0);
todayEnd.set(Calendar.SECOND, 0);
todayEnd.set(Calendar.MILLISECOND, 0);
return todayEnd.getTime();
}
2.获取任意年的结束时间
public static Date getDateByAfterYearNew(Date today, int number) {
Calendar todayEnd = Calendar.getInstance();
todayEnd.setTime(today);
todayEnd.set(Calendar.YEAR, todayEnd.get(Calendar.YEAR) - number);
todayEnd.set(Calendar.MONTH, 11);
todayEnd.set(Calendar.DAY_OF_MONTH, 31);
todayEnd.set(Calendar.HOUR_OF_DAY, 23);
todayEnd.set(Calendar.MINUTE, 59);
todayEnd.set(Calendar.SECOND, 59);
todayEnd.set(Calendar.MILLISECOND, 999);
return todayEnd.getTime();
}
二.获取任意月的起始和结束时间

1.获取任意月的起始时间
public static Date getDateByBeforeMonth(Date today, int number) {
Calendar todayEnd = Calendar.getInstance();
todayEnd.setTime(today);
todayEnd.set(Calendar.MONTH, todayEnd.get(Calendar.MONTH) - number);
todayEnd.set(Calendar.DAY_OF_MONTH, 1);
todayEnd.set(Calendar.HOUR_OF_DAY, 0);
todayEnd.set(Calendar.MINUTE, 0);
todayEnd.set(Calendar.SECOND, 0);
todayEnd.set(Calendar.MILLISECOND, 0);
return todayEnd.getTime();
}
2.获取任意月的结束时间
public static Date getDateByAfterMonthNew(Date today, int number) {
Calendar todayEnd = Calendar.getInstance();
todayEnd.setTime(today);
todayEnd.set(Calendar.MONTH, todayEnd.get(Calendar.MONTH)-number);
todayEnd.set(Calendar.DAY_OF_MONTH, 0);
todayEnd.set(Calendar.HOUR_OF_DAY, 23);
todayEnd.set(Calendar.MINUTE, 59);
todayEnd.set(Calendar.SECOND, 59);
todayEnd.set(Calendar.MILLISECOND, 999);
return todayEnd.getTime();
}
三.获取任意日的起始和结束时间

1.获取任意日的起始时间
public static Date getDateByBeforeDay(Date today, int day) {
Calendar todayEnd = Calendar.getInstance();
todayEnd.setTime(today);
todayEnd.set(Calendar.DAY_OF_MONTH, todayEnd.get(Calendar.DAY_OF_MONTH) - day);
todayEnd.set(Calendar.HOUR_OF_DAY, 0);
todayEnd.set(Calendar.MINUTE, 0);
todayEnd.set(Calendar.SECOND, 0);
todayEnd.set(Calendar.MILLISECOND, 0);
return todayEnd.getTime();
}
2.获取任意日的结束时间
public static Date getDateByAfterDayNew(Date today, int day) {
Calendar todayEnd = Calendar.getInstance();
todayEnd.setTime(today);
todayEnd.set(Calendar.DAY_OF_MONTH, todayEnd.get(Calendar.DAY_OF_MONTH) - day);
todayEnd.set(Calendar.HOUR_OF_DAY, 23);
todayEnd.set(Calendar.MINUTE, 59);
todayEnd.set(Calendar.SECOND, 59);
todayEnd.set(Calendar.MILLISECOND, 999);
return todayEnd.getTime();
}
四.获取任意时的起始和结束时间

1.获取任意时的起始时间
public static Date getDateByBeforeHour(Date today, int number) {
Calendar todayEnd = Calendar.getInstance();
todayEnd.setTime(today);
todayEnd.set(Calendar.HOUR_OF_DAY, todayEnd.get(Calendar.HOUR_OF_DAY) - number);
todayEnd.set(Calendar.MINUTE, 0);
todayEnd.set(Calendar.SECOND, 0);
todayEnd.set(Calendar.MILLISECOND, 0);
return todayEnd.getTime();
}
2.获取任意时的结束时间
public static Date getDateByAfterHourNew(Date today, int number) {
Calendar todayEnd = Calendar.getInstance();
todayEnd.setTime(today);
todayEnd.set(Calendar.HOUR_OF_DAY, todayEnd.get(Calendar.HOUR_OF_DAY) - number);
todayEnd.set(Calendar.MINUTE, 59);
todayEnd.set(Calendar.SECOND, 59);
todayEnd.set(Calendar.MILLISECOND, 999);
return todayEnd.getTime();
}
五.获取任意时间的周信息
public static Integer getWeekOfDate(Date date) {
Integer[] weekDays = {7, 1, 2, 3, 4, 5, 6};
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0) {
w = 0;
}
return weekDays[w];
}
六.获取任意时间是否在时间区间内
public static boolean belongCalendar(Date queryTime, Date from, Date to) {
Calendar queryInfo = Calendar.getInstance();
queryInfo .setTime(queryTime);
Calendar after = Calendar.getInstance();
after.setTime(from);
Calendar before = Calendar.getInstance();
before.setTime(to);
if (queryInfo.after(after) && queryInfo.before(before)) {
return true;
} else {
return false;
}
}
七.其他相关方法持续更新中
。。。
1092

被折叠的 条评论
为什么被折叠?



