為了感謝我新年快樂,我的 Java 代碼做了一些非常出乎意料的事情:在當前日期 06/01/2022 減去 11 天時,它不會減少年份。
有人知道為什么它不回傳“2021-12-26”???
代碼 :
DateFormat dateFormat = new SimpleDateFormat('YYYY-MM-dd');
Date dt = new Date();
println "current_date : " dateFormat.format(dt);
Calendar c = Calendar.getInstance();
c.setTime(dt);
c.add(Calendar.DATE, -11);
dt = c.getTime();
println "substracted_date : " dateFormat.format(dt);
安慰 :
current_date : 2022-01-06
substracted_date : 2022-12-26
uj5u.com熱心網友回復:
日期格式YYYY是周年的模式,而不是yyyy年的模式。
周年按周更新。例如,2021-12-26 是 2022 年第一周的開始,而不是 2021 年,因此會顯示 2022。但年份會按日期更新,因此會顯示 2021 年。
因此,只需更改YYYY為yyyy,它就會正常作業。
DateFormat dateFormat = new SimpleDateFormat('yyyy-MM-dd');
uj5u.com熱心網友回復:
嘗試使用 Java8 中的 LocalDate
import java.time.LocalDate;
public class test {
public static void main(String[] args) {
LocalDate date = LocalDate.parse("2022-01-06");
System.out.println("Date : " date);
LocalDate newDate = date.minusDays(11);
System.out.println("New Date : " newDate);
}
}
這將為您提供如下輸出 日期:2022-01-06 新日期:2021-12-26
uj5u.com熱心網友回復:
謝謝@Nekomura
為了下次不生氣,我用 2 個 assert 帶了腰帶和大括號,以免在使用錯誤的模式時感到驚訝^^:
/**
* renvoie un timestamp Fr de la date du serveur
* @param pattern (du type "dd-MM-yyyy" ou "HH:mm:ss")
* @param day_to_add permet d'ajout/retrancher des jours à la date actuelle
* @param hour_to_add permet d'ajout/retrancher des heures à la date actuelle
* @return le timetstamp au format correspondant à @pattern
*/
@Keyword
public static String getServerTimestamp(String pattern, int day_to_add, int hour_to_add) {
assert !pattern.contains("Y") : "ne pas utiliser pattern 'Y' mais 'y' (sinon on prend week year et ?a marche pas bien) ; voir reference https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html"
assert !pattern.contains("D") : "ne pas utiliser pattern 'D' mais 'd' (sinon on prend day in year et ?a marche pas bien) ; voir reference https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html"
Date dt = new Date();
Calendar c = Calendar.getInstance();
c.setTime(dt);
if (day_to_add != null) {
c.add(Calendar.DATE, day_to_add);
}
if (hour_to_add != null) {
c.add(Calendar.HOUR, hour_to_add);
}
dt = c.getTime();
DateFormat dateFormat = new SimpleDateFormat(pattern);
return dateFormat.format(dt);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/411011.html
標籤:
下一篇:Hivetrunc日期格式問題
