日期:2014-05-20  浏览次数:20701 次

关于日期与星期的问题
Java code

public static int getDayOfWeek(String date){
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date date1 = new Date();
        try{
            date1 = df.parse(date);
        }catch(Exception e){
            
        }
        Calendar c = Calendar.getInstance();
        c.setFirstDayOfWeek(Calendar.SATURDAY); //设置星期的第一天
        c.setTime(date1);
        return c.get(Calendar.DAY_OF_WEEK_IN_MONTH);
    }


代码如上面所示,方法代码是确定输入的日期是当月的第几个星期,测试过能输出星期数,但有误差!例如:输入"2012-05-21"得出3,"2012-05-22"得出4,代表不同一个星期,但这两个日期明明是星期一跟星期二,应该是是同一个星期的,之后我加入
c.setFirstDayOfWeek(Calendar.SATURDAY); 这段代码,但效果一样还是有误差!
有谁知道问题出在哪里?

------解决方案--------------------
把return c.get(Calendar.DAY_OF_WEEK_IN_MONTH);
改成return c.get(Calendar.WEEK_OF_MONTH);
------解决方案--------------------
Calendar.DAY_OF_WEEK_IN_MONTH 是指当前月中的第几个星期。
21号是第三周的末尾。
22号时第四周的开始。

所以21号返回3,22号返回4.