0

日付である文字列を比較したい

if (user_date < date)

日付には形式があるため、ユーザーがこの形式yyyy-mm-ddで有効なものを入力すれば、日付を文字列として比較しても問題ありません。user_date

残念ながら、user_dateユーザーが入力したため、無効になる可能性があります。無効な場合(または空のままの場合)、(user_date <date)を常にtrueにします。

var user_date='';ユーザーの日付が無効かどうかを設定することがわかりました。(user_date < date)それは有効な日付を作るための良い方法ですか?

同じ質問が(user_date > date)(どの日付よりも)です。私は設定することがわかりましたvar user_date='A';

私はそれが必要です

if (date1 <= date && date2>= date)
//do something

したがって、追加なしで動作しますif then

var user_date='2222-12-31';PSアルゴリズムは210年以内に正常に機能しなくなるので、私は入りたくありません。

4

4 に答える 4

1

それは不可能だと思います。しかし、可能なことは、比較が常に偽である日付を取得することです。したがって、機能的には、数値の場合と同じように動作NaNします。したがって、テストを反転して、に置き換える(a <= b)!(a > b)、機能します。

$date = new Date(NaN);
if (!($date1 > $date) && !($date2 < $date))  ...

psドル記号とは何ですか?JavascriptをPHPまたはPerlと混同していませんか?:)

于 2013-03-12T11:32:57.767 に答える
1

なんとなくできると思います

var date = '2013-03-12';
var $date = new Date(date);
function onChange(el){
    var user_date = el.value;
    var udate = new Date(user_date);
    if(isNaN(udate.getTime()) || udate < $date){
        alert('less')
    }

}

デモ:フィドル

于 2013-03-12T12:14:43.243 に答える
1

個人的には、ユーザーが入力している日付を最初に検証します。偶然に任せないでください。

この種のものには、ここで独自の日付拡張ライブラリを使用します。

DP_DateExtensions

parseFormat() メソッドを使用すると、入力を簡単に検証できます。このようなものはうまくいきます:

Date.parseFormat(InputString, "YYYY-M-D")

この関数は、入力された文字列が形式に一致する場合は有効な JavaScript 日付を返し、一致しない場合は null を返します。適用したいデフォルトの動作がある場合、明らかにこれに基づいてユーザー メッセージを送信する必要はありませんが、コード自体は「知っている」必要があります。

この場合、無効な日付を別の既知の適切な日付よりも前にしたい場合、それを行う方法はたくさんあります。最も単純なものは次のようなものです。

InputDate = Date.parseFormat(InputString, "YYYY-M-D");
if ( InputDate || InputDate < GoodDate ) {
     Input Date is Invalid or Falls before good date
} else {
     Input Date is Falls after good date
};

「偽の日付」を設定したり、正しい検証とブール論理を使用して推測したりする必要はありません。これは、世界が回転を停止するまで (理論的には) 機能します。

ライブラリの compare() メソッドを使用して、任意の精度に対してあらゆる種類の大小比較を行うことができます。

お役に立てれば。

于 2013-03-12T16:01:06.323 に答える
1

最小値を 0000-01-01 に、最大値を 9999-12-31 に設定してみませんか?

于 2013-03-12T11:16:12.137 に答える