Java 如何替换setDate和getDate

Java 如何替换setDate和getDate,java,deprecated,Java,Deprecated,不推荐使用的代码,如何替换setDate和getDate,现在代码可以工作,但我不能这样呈现它。我试过日历,但我不知道它是如何工作的。代码点是将日历中的确切天数向后移动 public void minusDay() { int days = dateRange(); toDate.setDate(toDate.getDate()-days); Java8DateAPI在LocalDateTime实例上支持minusDays和plusDays方法 如果您不想使用Java8D

不推荐使用的代码,如何替换
setDate
getDate
,现在代码可以工作,但我不能这样呈现它。我试过日历,但我不知道它是如何工作的。代码点是将日历中的确切天数向后移动

public void minusDay() {
    int days = dateRange();
    toDate.setDate(toDate.getDate()-days);   

Java8DateAPI在
LocalDateTime
实例上支持
minusDays
plusDays
方法

如果您不想使用Java8DateAPI转换整个系统,那么您可以将
Date
对象转换为
LocalDateTime
并进行处理。您还需要使用
ZonedDateTime
来考虑转换时的时区

public void minusDay() {
    int days = dateRange();
    LocalDateTime ldt = LocalDateTime.ofInstant(toDate.toInstant(), ZoneId.systemDefault());
    ldt.minusDays(days);
    ZonedDateTime zdt = ldt.atZone(ZoneId.systemDefault());
    toDate = Date.from(zdt.toInstant());
}

源代码。

Java8DateAPI在
LocalDateTime
实例上支持
minusDays
plusDays
方法

如果您不想使用Java8DateAPI转换整个系统,那么您可以将
Date
对象转换为
LocalDateTime
并进行处理。您还需要使用
ZonedDateTime
来考虑转换时的时区

public void minusDay() {
    int days = dateRange();
    LocalDateTime ldt = LocalDateTime.ofInstant(toDate.toInstant(), ZoneId.systemDefault());
    ldt.minusDays(days);
    ZonedDateTime zdt = ldt.atZone(ZoneId.systemDefault());
    toDate = Date.from(zdt.toInstant());
}

源代码。

“现在代码工作”。那就别碰它。你说的是
java.util.Date
吗?是的,它是java.util.Date。假设它是
java.util.Date
(java SE中有10多个
setDate()
方法),上面说:“不推荐使用。从JDK版本1.1开始,由Calendar.set(Calendar.DAY\u of_MONTH,int Date)代替。”(大多数不推荐使用的方法/字段都有一条带有替代选项的消息)
setTime
?表示包-“日期、时间、瞬间和持续时间的主API”-及其类(使用的不是很新的API,而不是
Date
Calendar
,…)“现在代码工作”。那就不要碰它。你说的是
java.util.Date
吗?是的,它是java.util.Date。假设它是
java.util.Date
(java SE中有10多个
setDate()
方法),上面说:“不推荐使用。从JDK版本1.1开始,由Calendar.set(Calendar.DAY\u of_MONTH,int Date)代替。”(大多数不推荐使用的方法/字段都有一条带有替代选项的消息)
setTime
?表示包-“日期、时间、瞬间和持续时间的主API”-及其类(使用的不是很新的API,而不是
Date
Calendar
,…)