【发布时间】: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);
如何更好地执行这个操作?
【问题讨论】:
-
我建议您不要使用
SimpleDateFormat、Date和GregorianCalendar。这些类设计不佳且过时已久,尤其是第一个类是出了名的麻烦。相反,只需使用来自java.time, the modern Java date and time API 的LocalDate。 -
Vlad L 的好回答可以解决您的问题。除了使用过时的类和一些小问题之外,您的代码中有两个问题:(1)使用
GregorianCalendar减去天数比您尝试的要多;您的代码无法编译。 (2) 你的日期字符串和你的格式模式字符串不匹配:一个在数字之间有连字符,另一个有斜线。