java - 如何从Java中存储日期的给定字符串字段中减去X天? [复制]
Posted
技术标签:
【中文标题】java - 如何从Java中存储日期的给定字符串字段中减去X天? [复制]【英文标题】:How to subtract X days from a given string field storing Date in java? [duplicate] 【发布时间】: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) 你的日期字符串和你的格式模式字符串不匹配:一个在数字之间有连字符,另一个有斜线。
【参考方案1】:
Date 正在逐步淘汰,如果您同意的话,您可以使用新的类(即,使用 Date 不是强制性的)。例如:
String extractDate = "2020-11-13";
LocalDate date = LocalDate.parse(extractDate);
LocalDate newDate = date.minusDays(30);
System.out.println(newDate);
【讨论】:
以上是关于java - 如何从Java中存储日期的给定字符串字段中减去X天? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
我java后台从数据库中读取到的时间日期如何在前台进行计算?