【问题标题】:java roll back one dayjava回滚一天
【发布时间】: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?

【问题讨论】:

标签: java calendar


【解决方案1】:

根据 javadocs http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html

Roll rule. Larger fields are unchanged after the call.

所以使用

c.add(Calendar.DAY_OF_YEAR, -1)

【讨论】:

    【解决方案2】:

    尝试使用 add 方法。

    c.add(Calendar.DAY_OF_YEAR, -1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 2018-10-13
      相关资源
      最近更新 更多