2013-04-16 112 views
0

我在這裏看到了幾個關於找到使用兩個不同日期之間差異的問題。與DateJS比較2次

我的問題類似於Parse ONLY a time string with DateJS

我基本上有2個時間輸入:

<input id="start_time" type="text"> <input id="end_time" type="text">

這些格式將永遠是:07:15 AM08:30 AM

從本質上講,我試圖做的是確保start_time是不大於end_time

我一直在使用DateJS解析日期試過,但它返回null

Date.parseExact("03:15 PM", "HH:mm"); <--- returns null 

我應該如何去比較兩個輸入字段(使用DateJS或別的東西),以確保START_TIME不大於比end_time?

任何幫助將是偉大的。

+1

你傳遞的日期字符串'parseExact'不匹配你傳遞的格式。 –

回答

4

您需要將AM/PM字段添加到您用於解析的格式。嘗試使用而不是

HH:mm 
+0

謝謝,這正是我試圖實現的目標。 – Dodinas

1

HH:mm tt 

不完全回答這個問題,但DateJS看起來有點過時了。我建議你看一看Moment.js,在這裏你可以這樣做:

moment("03:15 PM", "hh:mm A").isAfter(moment("03:05 PM", "hh:mm A")); 
// false 
+1

感謝您的建議。這看起來很有趣,我必須檢查一下。 – Dodinas

0

爲什麼不使用的toString?

var g = new Date("2012-01-11 03:15 PM"); 
console.log(g.toString('HH:mm')); 

只是添加一個奇怪的日期,以獲得一個有效的日期字符串格式。 因爲我猜你只是需要的時間不是日期

它適用於我。

0

您可以使用Date.parseExact,其格式修訂版由@matthewtole提供,或者您應該也可以只使用'Date.parse'。

Date.parseExact將提供更好的性能,但如果您只是解析兩個值,Date.parseExact的性能改進可能不會有太大的區別。

您也可以使用.isBefore()函數來檢查一個日期是否先於另一個。

var d1 = Date.parse("07:15 AM"); 
var d2 = Date.parse("08:30 AM"); 

d1.isBefore(d2); // true 

希望這有助於