想像できるところでは、ソフトウェアでY2Kスタイルのバグが発生しました。奇妙なことに、1年ごとの計算は2年しか行われないので、トラブルシューティングの方法がわかりません。Java日付の年計算が2日間で年を切っている
出力:
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'クラスを使用しています。 –