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

标签 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

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

最佳答案

遵循 Android 开发人员文档中的规则 here它似乎应该凭借最后一条规则(以及最近设置的事实)起作用。

Inconsistent information. If fields conflict, the calendar will give preference to fields set more recently. For example, when determining the day, the calendar will look for one of the following combinations of fields. The most recent combination, as determined by the most recently set single field, will be used.

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

关于java - 以下代码在 Java 和 Android 中的结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19786233/

相关文章:

带有单元格背景文本的 HTML 表格

java - 用java编写宾果游戏

java - Android 开发人员工具的 SSL 验证选项

java - 使用 ant build 创建的 jar 出现 NoClassDefFound 错误

android - 如何使用 Android videoview 从相机播放 RTSP 流视频(MPEG4,基线)?

android - android singleTask Activity 不作为root?

android - 在蓝牙打印机中格式化文本

android - 将我的日历应用程序与其他日历同步

java - 从年,月,日创建java日期对象

java - 为什么这个 FindBugs 警告没有被抑制?