【问题标题】:How to subtract X days from a given string field storing Date in java? [duplicate]java - 如何从Java中存储日期的给定字符串字段中减去X天? [复制]
【发布时间】:2021-02-25 06:32:50
【问题描述】:

我有一个返回日期值的字符串字段。我正在尝试将其转换为日期格式,然后从中减去 30 天。

String extractDate; //2020-11-13 is the value
Date dateFormat= (Date) new SimpleDateFormat("yyyy/MM/dd").parse(onlyDate); //cannot parse Date error
GregorianCalendar cal = new GregorianCalendar();
cal.add(dateFormat, -30);

如何更好地执行这个操作?

【问题讨论】:

  • 我建议您不要使用SimpleDateFormatDateGregorianCalendar。这些类设计不佳且过时已久,尤其是第一个类是出了名的麻烦。相反,只需使用来自java.time, the modern Java date and time APILocalDate
  • Vlad L 的好回答可以解决您的问题。除了使用过时的类和一些小问题之外,您的代码中有两个问题:(1)使用GregorianCalendar 减去天数比您尝试的要多;您的代码无法编译。 (2) 你的日期字符串和你的格式模式字符串不匹配:一个在数字之间有连字符,另一个有斜线。

标签: java date calendar


【解决方案1】:

Date 正在逐步淘汰,如果您同意的话,您可以使用新的类(即,使用 Date 不是强制性的)。例如:

        String extractDate = "2020-11-13";
        LocalDate date = LocalDate.parse(extractDate);
        LocalDate newDate = date.minusDays(30);
        System.out.println(newDate);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 2021-03-17
    • 2019-05-14
    • 2016-08-03
    • 2011-04-01
    相关资源
    最近更新 更多