先日ふと
日付形式がyyyy/MM/dd の形式ではうまく実装ができない箇所があった。
uuuu/mm/ddの形式であれば実装できたのだが違いが分からなかったので簡単にまとめる。
以下はどこでも見るような簡単な日付チェックの処理の一文である。
try {
LocalDate.parse("日付を保持したクラス",DateTimeFormatter.ofPattern("uuuu-MM-dd").withResolverStyle(ResolverStyle.STRICT));
} catch (DateTimeParseException e) {
return false;
}
処理に関して西暦で処理を実施するのであれば、
存在しない日付の自動的な修正も含めてuuuuの形式が無難であった。
逆に、存在しない日付をエラーとしたい場合は上記のように
ResolverStyle.STRICTをつけることで2022/09/31などをエラーとすることができる。
(※そのままだと自動的に09/30に修正してしまう)
逆に、
Japanesedate()などで、和暦に変換したり
GをつけてADを表示したい場合などはyyyyの形式の方が柔軟に対応ができる
基本的なシステムでは西暦でデータを管理する方が主だと思うため、
特段指定がない場合はuuuuの形式の方がデータが崩れる心配などが低いかと思われる