【发布时间】:2014-03-20 02:58:03
【问题描述】:
在我想从当前时间回滚一天的情况下。当我使用函数 Calendar.roll() 时它工作正常,但是当涉及到 2014-1-1 00:00 时,它似乎是一个意外结果。这是代码:
Calendar c = Calendar.getInstance();
try {
c.setTimeInMillis(sdf.parse("2014-1-1 00:00").getTime());
} catch (ParseException e) {
e.printStackTrace();
}
c.roll(Calendar.DAY_OF_YEAR, -1);
c1.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
System.out.println(sdf.format(c1.getTime()));
结果是:2014-12-31 00:00
如果我使用 Calendar.DAY_OF_MONTH 而不是 DAY_OF_YEAR,结果将是 2014-01-31 00:00
当回滚一天也回滚一年时,是否有人有解决方案,例如,将 2014 更改为 2013?
【问题讨论】:
-
你试过
c.add(Calendar.DAY_OF_YEAR, -1)吗?