1

以下代码在 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 的模拟器): 在此处输入图像描述

为什么会这样?我怎样才能解决这个问题?

4

1 回答 1

1

遵循此处的 Android 开发人员文档中的规则,它似乎应该根据最后一条规则(以及这些规则是最近设置的事实)起作用。

不一致的信息。如果字段冲突,日历将优先选择最近设置的字段。例如,在确定日期时,日历将查找以下字段组合之一。将使用由最近设置的单个字段确定的最近组合。

 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 实现中可能存在的错误?我会先尝试设置星期几,然后再设置可能解决此问题的月份。从第一周开始,一次使用 add 或 roll 7 天作为选项向前迭代。

于 2013-11-05T11:21:54.440 回答