所以我想实现一种方法,为我提供工作日的日期,以及如果是星期六或星期日,则下周的日期。为了实现这一点,我使用了 Calendar 和 setFirstDayOfWeek 方法。 这就是我的代码的样子:
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("Europe/Berlin"));
calendar.setFirstDayOfWeek(Calendar.SATURDAY);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); //write to array
calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);//write
calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); // and so on...
如果我周六在 IntelliJ 中编译它。 12 月 6 日,我得到以下日期:
Mon Dec 08 23:44:32 CET 2014
Tue Dec 09 23:44:32 CET 2014
...
Sat Dec 06 23:44:32 CET 2014
Sun Dec 07 23:44:32 CET 2014
..正如预期的那样。如果不将一周的第一天设置为星期六,则星期一的日期将为 12 月 1 日。
现在我在 Android Studio 下使用完全相同的代码。如果我不将一周的第一天设置为星期六,那么日期看起来就像在 IntelliJ 中一样。 谁能告诉我为什么相同的代码会提供不同的结果?
最佳答案
这可能是一周默认第一天的差异。 尝试在 getInstance() 之后立即在两个平台上执行 calendar.getFirstDayOfWeek(),看看会得到什么。
如果您得到不同的值,则可能是问题所在,而这又可能是由于不同的默认区域设置造成的。尝试在两个平台上构建具有相同区域设置的日历。
然后,还要记住,当您用 Java 编写 Android 代码时,在运行时,它不是在 JVM 上执行,而是使用 Dalvik 运行时。无法保证两者 100% 兼容,尤其是对于默认区域设置之类的内容。
有关详细信息,请参阅How to specify firstDayOfWeek for java.util.Calendar using a JVM argument
关于java - Android 中 java.util.Calendar 的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27337544/