1

ユーザーが日付を挿入するフォームがあります(編集:入力は「そのまま」フォームドキュメントにコピーされるため、フォーマットは異なります)

「20121201」

「2012-12-01」

「2012.12.01」

「2012年1月15日」

また、次のような友好的ではない(ただし、入力は高速です!)入力もあります。

"01122012" // 01 12 2012

"011212" //2012年1月12日

入力フォーマットは固定されていないので、私が得たものから自慢する必要があります...

もちろん、いくつかの優先順位があります:

「12.12.12」は、有効な場合はyy.mm.ddに解析するか、2番目のオプションとしてdd.mm.yyに解析する必要があります。

準備ができている関数のほとんどは、「適切にフォーマットされた」コンテンツで機能します。そのため、アルゴリズム(または他の言語のパーサーからの良いサンプルコード)が必要です。

4

1 に答える 1

1

次のように「簡単に」実行できます。

var dateString; // user input date
if(dateString.split(" ").length == 3){
    // you have "yyyy mm dd" format
} else if(dateString.split("-").length == 3){
    // you have yyyy-mm-dd format
} else if(dateString.split(".").length == 3){
    // you have "yyyy.mm.dd" or "mm.dd.yyyy" format
} else {
    // suppose you have "yyyymmdd" or "mmddyyyy" format
}

2 つの異なる形式を使用できる場合、日、年、月の値が有効な年であるかどうかを確認する必要があります。その場合は、日付を作成できます。そうでない場合は、別の方法を試してください。

yyyymmdd と mmddyyyy の組み合わせsubstr()では、文字列に対して関数を使用して、日、年、月を抽出できます。

ただし、ユーザー入力が「2012 年 3 月 12 日」や「abcdefg」のように間違っている可能性があることを常に考慮する必要がありますが、機能全体を try-catch ブロックにラップするだけです。

于 2013-02-07T13:29:55.230 に答える