【问题标题】:Subtract one day from date with format as mm/dd/yyyy [duplicate]从日期中减去一天,格式为 mm/dd/yyyy [重复]
【发布时间】:2016-07-25 17:14:56
【问题描述】:

我有一个日期字段被放入 .csv 文件中,我需要从每个日期中减去一天。这些日期取自一个 csv 作为字符串变量,并作为字符串变量放入另一个 csv。这些日期都格式化为 mm/dd/yyyy,我需要从每个日期中减去一天。我正在寻找如何做到这一点的最佳解决方案。

例如,我有一个日期为 2016 年 7 月 28 日,我需要将其带到 2016 年 7 月 27 日。

非常感谢所有帮助,在此先感谢。

编辑:我真的很感谢所有答案这么快,真的最终把它分成像第一个评论这样的步骤,我本可以使用 JodaTime 答案,但我只是选择了我看到的其他选项。

这是代码:

private String subtractDate(String date) {
        SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
        String returnValue = "";
        try {
            Date newDate = formatter.parse(date);
            Calendar cal = Calendar.getInstance();
            cal.setTime(newDate);
            cal.add(Calendar.DATE, -1);
            Date minusOne = cal.getTime();
            returnValue = formatter.format(minusOne);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return returnValue;
    }

现在可以正常工作了,再次感谢所有答案。我将接受第一个答案,因为我认为它会起作用,但我只是没有走那条路。

【问题讨论】:

  • 把你的问题分成三个部分: 1)把字符串解析成更合理的类型; 2) 减去一天; 3) 格式化回字符串。我建议使用java.time.LocalDate
  • 不是精确重复但加一天或减一天是一回事
  • 感谢您的帮助!

标签: java date datetime date-format


【解决方案1】:
SimpleDateFormat dateFormat = new SimpleDateFormat("mm/dd/yyyy");

Date date = dateFormat.parse("Your date as String");

之后,您可以使用 JodaTime 减去一天。

DateTime dateTime = new DateTime(date);

dateTime.minusDays(1); `

【讨论】:

  • 我真的很喜欢这个,因为它明确表达了我想要做什么,并且仍然可以尝试这个。感谢您的帮助!
  • 哦不,不要使用“mm”(分钟),使用“MM”(月)。将SimpleDateFormat 与 Joda-Time 混合是可怕的。我本来希望在这种情况下建议使用 Jodas 自己的格式引擎。
猜你喜欢
  • 1970-01-01
  • 2016-06-09
  • 1970-01-01
  • 2013-03-18
  • 2012-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多