做项目的时候,遇到个问题,要根据传递的日期获取这个日期是一周中的第几天.
于是这么搞,
SimpleDateFormat simpleDateFormat = DateTools.getSimpleDateFormat();
simpleDateFormat.applyPattern("yyyy-MM-dd");
Date parse = simpleDateFormat.parse(date);
Calendar cal = Calendar.getInstance();
cal.setTime(parse);
// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 获得当前日期是一个星期的第几天
int day = cal.get(Calendar.DAY_OF_WEEK);
问题是我都设置了一周中的第一天了,但是生成的结果不对,总是差一天,
最后查看API发现, setFirstDayOfWeek的方法只对WEEK_OF_MONTH 与WEEK_OF_YEAR 有作用.
WEEK_OF_MONTH :当前Calendar日期对象是当前月的第几周.
WEEK_OF_YEAR :当前Calendar 日期对象是当前年的第几周.
最后
/**
* UtilMethod 根据某一天获取是一周中的第几天
*
* @param dateString
* @return
*/
public int getDayOfWeek(String dateString) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = format.parse(dateString);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.setFirstDayOfWeek(Calendar.MONDAY);
int tmp = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (0 == tmp) {
tmp = 7;
}
return tmp;
} catch (ParseException e) {
e.printStackTrace();
return -1;
}
}