2017-05-08 25 views
-1

YYYY-MM-DDフォーマットの日付を自動入力する方法はありますか?入力フィールドにはMM-DDのみが必要です。MM-DD入力からJavaオートコンプリート/フォーマット日付

月と日が過去でない限り、年は現在の年となります。

例: "6月28日" 希望の出力2017年6月28日

と日付が過去にあった場合、

入力 "4月30日、" 出力の

入力2018-私は何かが欠けていた場合

コード04から30は、HTMLやJavaの助けを

おかげで書かれており、申し訳ありませんことになります。

+1

確かに、可能であるように聞こえます。しかし、どの言語を参照しているのかはすぐに分かりません。タグとタイトルの間にいくつかの混乱があります。 PHP? Java? _JavaScript_? (他のタグに基づいてJavaではなく、あなたが_might_と評価していると思います) –

+0

時間をとっていただきありがとうございます。私は明日のITの友達が仕事に来るときに質問を編集します。彼は私のために作成したカスタム.phpウェブサイトのフォームです。私は質問を再尋ねるか、またはこの質問をより簡潔に編集します。 –

+0

日付が過去であった場合、印刷する年はどのように分かりますか。なぜ年内に印刷するのですか? –

答えて

2

これは、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を拒否するように修正することができます。

+0

このコードがHTML入力テキストボックスでどのように機能するか教えてください。 –

+0

私は、私は恐れています。 @ ZachHunterあまりにもずっと前はこれが私の家庭のフィールドでした(私はあなたがJavaScriptを意味しないことを願っています、それは違うからです)。 –

0

現在の日付をチェックし、その年のオートコンプリートに基づいて単純な関数を書くだけではどうですか?

+0

@ Ethan Gills-関数を書くことは、実際に私が助けが必要なことです。私のバディは私に日付ピッカーを使用するHTMLのものを作成しましたが、私は何千もの日付を入力し、日付ピッカーは時間がかかりすぎます。ありがとう –

関連する問題