Java - 从日期中减去天数

标签 java date calendar

<分区>

我正在尝试从最初以字符串形式出现的日期中减去 5 天。

我已经看过关于这个主题的其他一些帖子,但我从代码中得到的结果总是不正确的。主要问题是,当减去天数时,年份值似乎没有改变,例如 - 2012-01-01 subtract 5 days gives me 'Jan 27 2012' using this code -

cal.add(Calendar.DATE, -5);

请帮忙。

最佳答案

您知道吗,在 Java 中,1 月实际上是二月?

Date februaryTheFirst = new Date(2012,1,1); // equals 2012-02-01

这或许可以解释您所看到的。如果你想实例化 2012-01-01,你应该这样做:

Date firstDayOf2012 = new Date(2012,0,1); // this is 2012-01-01

处理 Calendar 时会发生完全相同的事情:

Calendar.getInstance().set(2012,0,1); // 2012-01-01

请务必查看 Date(int, int, int) 的文档和 Calendar.set(int, int, int) .此外,您可以检查解析字符串的方式。如果你使用 SimpleDateFormat.parse(...) ,事情会变得更容易。

很奇怪,不是吗?想想看……作为一个有趣的事实,IntelliJ 的文档使用 @MagicConstant 对第二个参数 month 进行注释,以提醒程序员发生了一些非常奇怪的事情。

关于Java - 从日期中减去天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12930134/

相关文章:

java - 多线程如何破坏Hashmap的内部结构

java - 使用 org.json 在 java 中创建 JSON

Python:如何将时间戳转换为 Pandas 列中的日期?

java - 日历 android 小时/分钟值

javascript - Kendo UI 日历 : Force multi-selection

java - 在手动创建的实例中注入(inject)组件

java - 得到递归方法的错误输出

mysql - 使用 SQL 匹配日期

php - 转换日期字符串以插入 mysql 日期格式

ios - 日历应用程序想要快速与 ios 日历同步