の年を設定しようとしていjava.util.Date
ます。
解析する必要があるタイムスタンプには年が含まれていないため、次のようにしました。
private static final SimpleDateFormat logTimeStampFormat =
new SimpleDateFormat("MMM dd HH:mm:ss.SSS");
boolean isAfterRefDate (String line, Date refDate) {
try {
Date logTimeStamp = logTimeStampFormat.parse(line);
logTimeStamp.setYear(2012); // But this is deprecated!
return logTimeStamp.after(refDate);
} catch (ParseException e) {
// Handle exception
}
}
非推奨の方法を使用しないようにするために、私は次のようにします。
private static final SimpleDateFormat logTimeStampFormat =
new SimpleDateFormat("MMM dd HH:mm:ss.SSS");
private static Calendar cal = Calendar.getInstance();
boolean isAfterRefDate (String line, Date refDate) {
try {
Date logTimeStamp = logTimeStampFormat.parse(line);
cal.setTime(logTimeStamp);
cal.set(Calendar.YEAR, 2012);
logTimeStamp = cal.getTime();
return logTimeStamp.after(refDate);
} catch (ParseException e) {
// Handle exception
}
}
これがこの問題を解決する最善の方法だとは思いません。最初にカレンダー オブジェクトを適切に設定してから、そこから日付オブジェクトを取得する必要がありますが、以前は日付オブジェクトを直接変更するだけで済みました。
誰かがより良いアプローチを提案できますか?