gpt4 book ai didi

java - 日历 setter 不接受我的更改

转载 作者:行者123 更新时间:2023-12-01 17:01:16 26 4
gpt4 key购买 nike

日历设置器不接受我的更改。设置员后DAY_OF_WEEK保持不变任何人都有想法吗?

Calendar firstDayOfTheWeek = Calendar.getInstance();
Calendar lastDayOfTheWeek = Calendar.getInstance();

firstDayOfTheWeek.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
lastDayOfTheWeek.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);


如果我在之后调试2个日历,则日期相同

最佳答案

java.time

我建议您将java.time(现代Java日期和时间)用于日期工作。

    LocalDate today = LocalDate.now(ZoneId.systemDefault());

LocalDate firstDayOfTheWeek = today.with(DayOfWeek.MONDAY);
LocalDate lastDayOfTheWeek = today.with(DayOfWeek.SUNDAY);

System.out.println("The week is from " + firstDayOfTheWeek + " through " + lastDayOfTheWeek);


今天运行代码时,输​​出为:


星期是从2020-04-27至2020-05-03


您的代码出了什么问题?

您使用的是1990年代的 Calendar类。该课程的设计不佳,幸运的是已经过时了。其众多令人困惑的特征之一是,设置字段后,它不会立即设置其字段。如文档所述:


直到 Calendar中设置的任何字段值都不会被解释
需要计算其时间值(距离纪元为毫秒)或
日历字段的值。调用 getgetTimeInMillis
getTimeaddroll涉及这种计算。


因此,如果您设置一个或多个字段并在调试器中查看 Calendar或使用 toString()打印它,您将看到一个中间状态,该状态尚未决定其字段值,因此您看到的值可能不一致而不是预期的。

链接

Oracle tutorial: Date Time解释如何使用java.time。

关于java - 日历 setter 不接受我的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61503643/

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