/**
* 给定开始时间和结束时间,判断当前时间是第几周,七天为一周,按照自然周进行计算
*
* @param startTime
* @return
*/
public static int getWeek(long startTime, long currentTime, long endTime) {
if (currentTime < startTime || endTime < startTime) {
return 0;
}
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(getFirstDayOfWeek(startTime).getTime());
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
calendar.clear();
calendar.set(year, month, dayOfMonth);
// 当前时间和开始时间0点的毫秒数差值
long value = currentTime - calendar.getTimeInMillis();
if (getLastDayOfWeek(endTime).getTime() < currentTime) {
value = endTime - calendar.getTimeInMillis();
}
// 一周的毫秒数
long oneWeekMillis = 1000 * 60 * 60 * 24 * 7;
return (int) (value / oneWeekMillis + 1);
}
/**
* 获取当前时间的周一时间
*
* @param date
* @return
*/
public static Date getFirstDayOfWeek(long date) {
Calendar c = Calendar.getInstance();
c.setTime(new Date(date));
if (c.get(Calendar.DAY_OF_WEEK) == 1) {
c.add(Calendar.DAY_OF_MONTH, -1);
}
c.add(Calendar.DATE, c.getFirstDayOfWeek() - c.get(Calendar.DAY_OF_WEEK) + 1);
return c.getTime();
}
/**
* 获取当前时间的周日时间
*
* @param date
* @return
*/
public static Date getLastDayOfWeek(long date) {
Calendar c = Calendar.getInstance();
c.setTime(new Date(date));
// 如果是周日直接返回
if (c.get(Calendar.DAY_OF_WEEK) == 1) {
return new Date(date);
}
c.add(Calendar.DATE, 7 - c.get(Calendar.DAY_OF_WEEK) + 1);
return c.getTime();
}
07-14
823
10-28
785