//此为获取时间戳指定时间是一年的第几周 Calender
public class DateUtils {
public static Integer getWeekOfYear(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(date);
int week = calendar.get(Calendar.WEEK_OF_YEAR);
int mouth = calendar.get(Calendar.MONTH);
// JDK think 2015-12-31 as 2016 1th week
//如果月份是12月,且求出来的周数是第一周,说明该日期实质上是这一年的第53周,也是下一年的第一周
if (mouth >= 11 && week <= 1) {
week += 52;
}
return week;
}
public static Integer getYearOfDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.YEAR);
}
public static Integer weeksBetween(Date fromDate, Date toDate) {
if (fromDate.before(toDate)) {
Date temp = fromDate;
fromDate = toDate;
toDate = temp;
}
Integer weekNum = (getWeekOfYear(fromDate) - getWeekOfYear(toDate))
+ (getYearOfDate(fromDate) - getYearOfDate(toDate)) * 52;
return ++weekNum;
}
public static void main(String[] args) {
//此为获取 2021年1月10是2021年的第几周
String formDateString = "2021-01-1 ";
String toDateString = "2021-01-10 ";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ");
try {
Date formDate = sdf.parse(formDateString);
Date toDate = sdf.parse(toDateString);
System.out.println(weeksBetween(formDate, toDate));
} catch (ParseException e) {
e.printStackTrace();
}
}
}