如果您能想象,這會在我的軟件中導致Y2K風格的錯誤。奇怪的是,一年的計算只發生在一年中的兩天,我不太確定如何排除故障。Java日期年計算在兩天內每年都會關閉
輸出:
03-Jan-2013
02-Jan-2013
01-Jan-2013
31-Dec-2013 ** strange
30-Dec-2013 ** strange
29-Dec-2012
28-Dec-2012
27-Dec-2012
26-Dec-2012
25-Dec-2012
我不知道其中的Java日期公用事業的一部分可能會導致這樣的錯誤。
代碼(由於測試是如此之小,我包括一個完整的工作程序):
import java.util.Calendar;
import java.util.Date;
import java.text.SimpleDateFormat;
public class DateT {
private static String getFormattedBackscanStartTime(int days) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-YYYY");
Calendar workingDate = Calendar.getInstance();
workingDate.add(Calendar.DATE, -1 * days);
String formattedStartTime = dateFormat.format(workingDate.getTime());
return formattedStartTime;
}
public static void main(String args[]) {
for(int i = 35; i < 45; i++) {
System.out.println(getFormattedBackscanStartTime(i));
}
}
}
我想你會從中受益。 https://forums.oracle.com/forums/thread.jspa?threadID=2096000 – Achrome
請注意''Calendar'&'SimpleDateFormat'類現在是[legacy](https://en.wikipedia.org/wiki/遺留系統)。支持[java.time](https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html)類。現代方法改用'LocalDate','ZoneId'和'DateTimeFormatter'類。 –