- 締切済み
日時の比較方法について教えください
こんにちは。 JavaScript(jQuery)での日時の比較方法について教えていただきたいです。 var testTime = "2012-03-20 13:00:00"; testTime に上記の日時が格納されていたとします。 この testTime と現在日時を比較し、testTime が現在日時よりも3日以上前の日時であればTRUEを返す処理を書きたいのですが、 どうった処理になりますでしょうか? どうかお教えいただけないでしょうか。。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hanabutako
- ベストアンサー率54% (492/895)
function isOld(datetime, diffMilliseconds) {return Date.now() - Date.parse(datetime) > diffMilliseconds;} isOld("2012-03-20T13:00:00", 60 * 60 * 24 * 3 * 1000); でどうでしょう? ECMAScript (JavaScriptのこと)の仕様書である ECMA-262 の 15.19.4.2節 によると、ISO 8801形式で書くとDate.parseで解読してくれるので、testTimeを2012-03-20T13:00:00と書いて良いなら、上記で動くと思います。 http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf また、確実に動くことは保証されていませんが、15.19.4.2節によると、ISO 8801形式以外でも解読を試みるようなので、実は、"2012-03-20 13:00:00"や"2012/03/20 13:00:00"なんかも使っているブラウザによっては動きます。
- notnot
- ベストアンサー率47% (4900/10358)
Dateオブジェクトに変換して、差をとり、3日以上(ミリ秒単位なので、3 * 24 * 60 * 60 * 1000以上)かどうかを調べれば良いでしょう。 ただし、 var d=Date("~") でDateオブジェクトに変換するためには、日付が dd/mm/yy の形式である必要があるようですので、そのままでは無理で、一度、全部ばらばらにしないといけません。 こんな感じで。 function MyParse(x){ var a=x.split(/[-: ]/); return new Date(a[0],a[1],a[2],a[3],a[4],a[5]); } var testTime1 = "2012-03-20 13:00:00"; var testTime2 = "2012-03-10 00:00:00"; var d1=MyParse(testTime1); var d2=MyParse(testTime2); var days=(d1-d2)/(24*60*60*1000); alert("日時の差は "+days+"日です");