我有一個從數據庫以這種格式「2013-05-27 14:27:37」返回的日期,我需要將此日期與當前日期進行比較。比較當前日期與另一個日期時間在javascript
每次我試圖解析我的日期它返回無效的日期。
我有一個從數據庫以這種格式「2013-05-27 14:27:37」返回的日期,我需要將此日期與當前日期進行比較。比較當前日期與另一個日期時間在javascript
每次我試圖解析我的日期它返回無效的日期。
Firefox不支持該格式。使用/
而不是-
,或使用T
而不是分隔日期和時間組件的空格。詳情請見this chart。
您可能會考慮使用moment.js。你可以像這樣解析一個字符串:
var m = moment("2013-05-27 14:27:37", "YYYY-MM-DD HH:mm:ss");
然後你可以使用矩的比較函數。例如:
if (m1.isBefore(m2)) { ... }
if (m1.isAfter(m2)) { ... }
您可以閱讀the documentation瞭解更多功能。
那麼,你總是可以手動解析它。
var s = "2013-05-27 14:27:37";
var m = /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/.exec(s);
var date = new Date(+m[1], +m[2] - 1, +m[3], +m[4], +m[5], +m[6]);
這似乎是湯姆與我合作,但我想知道爲什麼我不能用新的Date();這會更容易,對吧?任何方式感謝您的智能解決方案。 – ahmedsaber111
非常好。 :)就這個特定格式的直接解析器而言,它並沒有比這更好。 –
@ ahmedsaber111:'新日期[需要支持](http://es5.github.io/#x15.9.4.2)的唯一格式是[(或多或少)ISO 8601](http:///es5.github.io/#x15.9.1.15)。所以你不能依靠瀏覽器來支持其他任何東西(比如在這種情況下)。 – Ryan
你也可以嘗試通過date.js來推測你的日期,希望這會有所幫助。
如果您使用的是date.js,請確保使用維護的叉子。 [閱讀此](http://stackoverflow.com/tags/datejs/info)。 –
我正在使用Requirejs,這有效嗎AMD – ahmedsaber111
@ ahmedsaber111 - date.js修改了'Date'原型。你可以從require中加載它,但它並不像你想象的那樣。另一方面,Moment.js直接支持AMD,並且不修改'Date'原型。 –
momnet.js解決了我的問題 – ahmedsaber111