2

日付が過去かどうかを確認する必要があります。これは私がこれまでに持っているものです。JSfiddleはこちら

var date = "09/12/2013";
var d = new Date();
var month = d.getMonth() + 1;
var day = d.getDate();
var todaysDate = +(('' + day).length < 2 ? '0' : '') + day + '/' + (('' + month).length < 2 ? '0' : '') + month + '/' + d.getFullYear();

if (date < todaysDate) {
    alert("in the past");
} else {
    alert("in the future");
}

現在、日付は過去であり、将来の日付であると言われています。文字列を日付として解析する必要があることはわかっていますが、方法がわかりません。

ヘルプ?

4

3 に答える 3

8

その入力形式では、最も重要でない値が左側にあるため、文字列比較を使用できません。: 日付は 2013 年 12 月 9 日であると仮定しています。2013 年 9 月 12 日であるアメリカのことを行っている場合は、インデックスをparts以下に調整する必要があります。

フィールドを逆にすることができます:

var date = "09/12/2013";
var parts = date.split('/');
date = parts[2] + "/" + parts[1] + "/" + parts[0];

...そして、文字列の比較を行います (必ず「今日」の文字列を同じ順序 (年/月/日) で作成してください)。

それをするつもりなら、先に進んで仕事を終わらせることができます

var date = "09/12/2013";
var parts = date.split('/');
var date = new Date(parseInt(parts[2], 10),     // year
                    parseInt(parts[1], 10) - 1, // month, starts with 0
                    parseInt(parts[0], 10));    // day
if (date < new Date()) {
    // It's in the past, including one millisecond ago
}

...しかしもちろん、1 ミリ秒前に式を true にしたくない場合は、文字列のアプローチで問題ありません。

于 2012-11-23T16:02:54.780 に答える
0
var date = new Date("09/12/2013");
var d = new Date();
console.log(date>d); // true
var date = new Date("09/12/2011");
console.log(date>d); // false
于 2012-11-23T16:03:24.377 に答える
-1

JavaScript のネイティブ Date コンパレーターは、文字列を比較しているのに対し、Date オブジェクトでのみ機能します。オブジェクトに解析dateしてDateから、 と比較する必要がありdます。

//define parse(string) --> Date
if(parse(date) < new Date()) {
  alert('past');
} else {
  alert('future');
}
于 2012-11-23T16:03:57.420 に答える