setFirstDayOfWeek 不起作用,疑惑?

来源:互联网 发布:减肥晚上吃什么 知乎 编辑:程序博客网 时间:2024/05/22 04:52

做项目的时候,遇到个问题,要根据传递的日期获取这个日期是一周中的第几天.

于是这么搞,

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;}}


0 0