2013-11-14 94 views
63

我有這個問題...我還沒有發現任何類似的東西,它似乎也很奇怪,沒有人有這個問題與moment.js驗證時間。moment.js isValid函數不能正常工作

moment('03:55', 'HH:mm').isValid(); //true 
moment('03:55jojojo', 'HH:mm').isValid(); //true 
moment('03:55jojojo', 'HH:mm',true).isValid(); //true 

我做錯了什麼? 下面是一個例子:

http://jsfiddle.net/vCGAp/145/

+3

我只能猜測他們明確地測試了你傳遞的格式被測試......但是沒有檢查「值是否與格式相同?」我建議嘗試提交一個bug報告給moment.js – scunliffe

+0

...爲什麼你在第一個地方有這些額外的字符?它是否按照該格式正確驗證較長的日期字符串? – Mathletics

+0

你是什麼意思與額外的字符? –

回答

140

在你的問題你寫的moment('03:55jojojo', 'HH:mm',true).isValid();返回true。這是不正確的。請再次檢查你的jsfiddle。

http://momentjs.com/docs/

片刻的解析器是非常寬容的,這可能導致不希望 行爲。從版本2.3.0開始,您可以爲最後的 參數指定一個布爾值,以使Moment使用嚴格的解析。嚴格的解析需要 格式和輸入完全匹配。

moment('It is 2012-05-25', 'YYYY-MM-DD').isValid();  // true 
moment('It is 2012-05-25', 'YYYY-MM-DD', true).isValid(); // false 
moment('2012-05-25', 'YYYY-MM-DD', true).isValid();  // true 

您可以使用語言和嚴格。

moment('2012-10-14', 'YYYY-MM-DD', 'fr', true); 
+1

真(指數):26 真(指數):27 真(指數):29 這是控制檯日誌輸出:■ –

+0

如果你檢查你的jsfiddle,你會發現,你是不是真正的傳遞作爲第三個參數在任何地方,但在你的問題中,你聲明'moment('03:55jojojo','HH:mm',true).isValid();'返回true。請在瀏覽器中運行確切的代碼 - 輸出是錯誤的。 –

+1

男人,非常感謝你,這第三個真實的參數,多次拯救了我的生命,只是想說,因爲我總是不斷回來這個答案。 – Kadaj