gpt4 book ai didi

java - Android 日历 getFirstDayOfWeek 错误

转载 作者:搜寻专家 更新时间:2023-11-01 08:27:06 27 4
gpt4 key购买 nike

我想获得一周的第一天,但​​我有一个奇怪的错误。如果我使用这段代码:

Calendar cal = Calendar.getInstance();
cal.set(2017, 0, 1);

cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL, Locale.getDefault());
Log.d(TAG, "Date: " + dateFormat.format(cal.getTime()));

我的日志显示错误的日期:D/Activity: Date: lundi 2 janvier 2017

但是如果我像这样使用 getTime() 方法:

Calendar cal = Calendar.getInstance();
cal.set(2017, 0, 1);
cal.getTime(); // Here

cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL, Locale.getDefault());
Log.d(TAG, "Date: " + dateFormat.format(cal.getTime()));

我的日志显示正确的日期:D/Activity: Date: lundi 26 décembre 2016

我的手机使用法语,所以我的一周从星期一开始。

有人知道为什么吗?

最佳答案

Java 的日历 API 因其更新字段的行为而臭名昭著。问题是多个 set() 调用可能会导致一些意想不到的结果,因为一些内部结构没有得到适当的调整,即它不会更新一些值,直到它确实必须更新,例如当您调用 getTime() 时。

您可以在 this post 上阅读更多内容.

因此,解决此问题的方法确实是在两者之间调用 getTime()getTimeInMillis()

关于java - Android 日历 getFirstDayOfWeek 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43836721/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com