<分区>
我正在尝试从最初以字符串形式出现的日期中减去 5 天。
我已经看过关于这个主题的其他一些帖子,但我从代码中得到的结果总是不正确的。主要问题是,当减去天数时,年份值似乎没有改变,例如 - 2012-01-01 subtract 5 days gives me 'Jan 27 2012'
using this code -
cal.add(Calendar.DATE, -5);
请帮忙。
<分区>
我正在尝试从最初以字符串形式出现的日期中减去 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/