如描述in the documentation,截至時刻2.3.0,您可以傳遞第三個參數true
,它打開「嚴格解析」模式。
moment("2014-12-13 asdasd","YYYY-MM-DD LT", true).isValid() // false
moment("2014-12-13 12:34 PM","YYYY-MM-DD LT", true).isValid() // true
不利的一面是,它必須在語言環境的格式正是匹配。由於LT
英文版相當於h:mm A
,因此它只接受12小時的時間而沒有秒。如果你通過24小時的時間,或通過秒,那麼它會失敗。
moment("2014-12-13 12:34:00 PM","YYYY-MM-DD LT", true).isValid() // false
moment("2014-12-13 15:00","YYYY-MM-DD LT", true).isValid() // false
一個更好的解決方案可能是通過多種格式嚴格解析:
var formats = ["YYYY-MM-DD LT","YYYY-MM-DD h:mm:ss A","YYYY-MM-DD HH:mm:ss","YYYY-MM-DD HH:mm"];
moment("2014-12-13 12:34 PM", formats, true).isValid() // true
moment("2014-12-13 15:00", formats, true).isValid() // true
moment("2014-12-13 12:34:00 PM", formats, true).isValid() // true
感謝您指出了這一點。我打算使用moment()._ lang._longDateFormat.LT來驗證字符串,它會隨着語言環境而改變,並且應該可以正常工作。 – Chiranjib 2014-09-28 04:49:15
如果您使用的是當前版本(2.2.0+),請改爲使用:'moment.localeData()。longDateFormat('LT')'。 [docs here](http://momentjs.com/docs/#/i18n/locale-data/) – 2014-09-28 06:31:21
再次感謝您。會做。 – Chiranjib 2014-09-29 06:45:55