gpt4 book ai didi

java - 日历未给出正确的日期

转载 作者:行者123 更新时间:2023-11-30 06:48:38 25 4
gpt4 key购买 nike

我将使用 MM/dd/yyyy 格式下面的代码应该给我“07/01/2017”,但它给我“06/30/2017”,但如果我取消注释//cal.getTime();我收到“07/01/2017”

有人可以解释一下这种行为吗?

public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
Date date = new Date("04/02/2017");
cal.setTime(date);
System.out.println(date);
Calendar nQtStartDate = new GregorianCalendar(cal.get(Calendar.YEAR),
Calendar.JUNE, 30);
cal = nQtStartDate;
//cal.getTime();

cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);


System.out.println(cal.getTime());

}

最佳答案

当您调用 getTime() 方法时,内部更新时间并更改变量 isTimeSet 的状态(根据我在阅读源代码中看到的内容,这使得该类不是线程安全的)。

public long getTimeInMillis() {
if (!isTimeSet) {
updateTime();
}
return time;
}

另一方面,语句 cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY) 重置内部时间的状态(将变量 isTimeSet 更改为 false)。

如果内部time的值有效,则变量isTimeSet的状态为true

总结一下:调用 getTime() 方法后不要更改日历配置(即设置星期几),因为这将重置日历的内部状态。

关于java - 日历未给出正确的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43242117/

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