シヴ:
私が使用していSimpleDateFormatter
た日付に文字列を変換するためにクラスを。私は2020年2月27日のために働く、次のコードを持っています:
SimpleDateFormat FORMATTER = new SimpleDateFormat("ddMM"); //always current year
Date TODAY = FORMATTER.parse("2702");
System.out.println(TODAY);
次の日付にこの解決します。
Fri Feb 27 00:00:00 UTC 1970
私は2020年2月29日(うるう年)のために同じことをしようとすると、しかし、私はエラーを取得します:
コード:
SimpleDateFormat FORMATTER = new SimpleDateFormat("ddMM"); //always current year
Date TODAY = FORMATTER.parse("2902");
System.out.println(TODAY);
出力:
Sun Mar 01 00:00:00 UTC 1970
私はこの日付フォーマットを使用して、同様のアカウントの閏年を考慮に入れることができるように誰かが道を提案してくださいことはできますか?
ありがとうございました。
アンドレアス:
それはデフォルトの年を指定するサポートしているのであなたは、Javaの8時間のAPIを使用する必要があります。
public static Date dayMonthToDate(String dayMonth) {
DateTimeFormatter FORMATTER = new DateTimeFormatterBuilder()
.appendPattern("ddMM")
.parseDefaulting(ChronoField.YEAR, Year.now().getValue())
.toFormatter();
LocalDate localDate = LocalDate.parse(dayMonth, FORMATTER);
Instant instant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
return Date.from(instant);
}
テスト
public static void main(String[] args) {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
System.out.println(dayMonthToDate("2702"));
System.out.println(dayMonthToDate("2902"));
}
出力
Thu Feb 27 00:00:00 UTC 2020
Sat Feb 29 00:00:00 UTC 2020