これは、java.time
クラスが優秀な場所です。
public static LocalDate autocomplete(String mmdd) {
ZoneId clientTimeZone = ZoneId.systemDefault();
LocalDate today = LocalDate.now(clientTimeZone);
MonthDay md = MonthDay.parse(mmdd, DateTimeFormatter.ofPattern("MM-dd"));
Year y = Year.from(today);
if (md.isBefore(MonthDay.from(today))) {
// in the past; use next year
y = y.plusYears(1);
}
return y.atMonthDay(md);
}
タイムゾーンの依存性に注意してください。どちらのゾーンを使うべきか二度考えましょう。
結果がString
の場合は、toString()
を使用してください。
コーナーケース:このメソッドは有効な入力として02-29
を受け入れ、選択した年がうるう年でない場合は2月28日の日付に自動補完します。次の2月に29日がない限り、02-29
を拒否するように修正することができます。
確かに、可能であるように聞こえます。しかし、どの言語を参照しているのかはすぐに分かりません。タグとタイトルの間にいくつかの混乱があります。 PHP? Java? _JavaScript_? (他のタグに基づいてJavaではなく、あなたが_might_と評価していると思います) –
時間をとっていただきありがとうございます。私は明日のITの友達が仕事に来るときに質問を編集します。彼は私のために作成したカスタム.phpウェブサイトのフォームです。私は質問を再尋ねるか、またはこの質問をより簡潔に編集します。 –
日付が過去であった場合、印刷する年はどのように分かりますか。なぜ年内に印刷するのですか? –