以下代码在Java中运行时会产生不同的结果,而不是在Android上运行时:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();//
for(int k = 1; k < 10; k++) {
cal.set(Calendar.YEAR, 2013);
cal.set(Calendar.WEEK_OF_YEAR, k);
cal.set(Calendar.DAY_OF_WEEK, 1);
System.out.println(sdf.format(cal.getTime()));
}
Java上的结果(JDK 1.6):
Android上的结果(Android 4.2.2模拟器):
为什么会这样?我该如何解决这个问题?
答案 0 :(得分:1)
遵循Android开发人员文档here中的规则,它似乎应该依据最后一条规则(以及这些规则最近已设置的事实)。
信息不一致。如果字段冲突,日历将给出 对最近设置的字段的偏好。例如,在确定时 当天,日历将查找以下组合之一 的领域。最新组合,由最多确定 最近设置单场,将被使用。
MONTH + DAY_OF_MONTH MONTH + WEEK_OF_MONTH + DAY_OF_WEEK MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK DAY_OF_YEAR DAY_OF_WEEK + WEEK_OF_YEAR
Android实施中可能存在的错误? 我会尝试首先设置DAY Of Week,然后设置可能解决问题的月份。或者,从第一周开始,一次使用添加或滚动七天作为选项进行迭代。