Java和Android中的以下代码结果不同

时间:2013-11-05 10:01:30

标签: java android calendar

以下代码在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):

java


Android上的结果(Android 4.2.2模拟器): enter image description here

为什么会这样?我该如何解决这个问题?

1 个答案:

答案 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,然后设置可能解决问题的月份。或者,从第一周开始,一次使用添加或滚动七天作为选项进行迭代。