- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想获得一周的第一天,但我有一个奇怪的错误。如果我使用这段代码:
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/
我可能忽略了一些非常明显的事情,但为什么会这样: final Calendar calendar = Calendar.getInstance(Locale.GERMAN); System.out.p
Calendar.getFirstDayOfWeek() 返回一周的第一天,但它是星期一。我怎样才能让星期天成为第一天?我试图在 getfirstday 之前先将 Calendar.Day_of_
我想获得一周的第一天,但我有一个奇怪的错误。如果我使用这段代码: Calendar cal = Calendar.getInstance(); cal.set(2017, 0, 1); cal.s
也许是一个愚蠢的问题,但我有一个在 Java 文档中没有找到的问题。 Calendar.get(Calendar.DAY_OF_WEEK) 的值是否会根据 Calendar.getFirstDayOf
我是一名优秀的程序员,十分优秀!