gpt4 book ai didi

java - 构建日期时出错

转载 作者:行者123 更新时间:2023-11-29 22:16:25 25 4
gpt4 key购买 nike

我有这样的代码:

Log.d(TAG, "day=%d, month=%d, year=%s", day, month, year);

Calendar c = Calendar.getInstance();
c.clear();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, day);

Log.i(TAG, "Date is parsed to %tF", c.getTime(), c.get(Calendar.DAY_OF_MONTH));

这是我在执行时得到的日志:

day=11, month=11, year=1985
Date is parsed to 1985-12-10

为什么不是 1985-12-11?它在某些日期或在 Debug模式下工作正常。但为什么它并不总是有效?

在使用 Date 和通过 SimpleDateFormat 从 String 解析日期时,我也有类似的问题

编辑:此代码执行的其他示例:

day=1, month=0, year=2012
Date is parsed to 2012-01-01

day=25, month=11, year=2011
Date is parsed to 2011-12-25

day=4, month=10, year=1979
Date is parsed to 1979-11-03

day=3, month=11, year=1984
Date is parsed to 1984-12-02

无法从其他线程更改日、月和年。

最佳答案

日历中的月份是从零开始的。看这里:http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html#MONTH

我建议您阅读以下内容:http://mindprod.com/jgloss/gregoriancalendar.html

如果可以的话,使用 joda-time 实际上会更容易且更不容易出错- 它有一个更简洁、更安全的 API。

关于java - 构建日期时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8341614/

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