2013-11-14 13 views
63

Tôi có câu hỏi này ... Tôi đã không tìm thấy bất cứ điều gì tương tự và nó cũng có vẻ rất lạ mà không ai có vấn đề này xác nhận thời gian với moment.js.moment.js isValid chức năng không hoạt động đúng

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

Tôi có làm gì sai không? Dưới đây là một ví dụ:

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

+3

Tôi chỉ có thể đoán rằng họ kiểm tra rõ ràng rằng định dạng bạn vượt qua được kiểm tra ... nhưng không có kiểm tra cho "có giá trị cùng độ dài như định dạng không?" ... Tôi khuyên bạn nên thử gửi báo cáo lỗi cho moment.js – scunliffe

+0

... tại sao bạn lại có những ký tự thừa này ở vị trí đầu tiên? Nó có xác nhận chính xác các chuỗi ngày tháng dài hơn với định dạng đó không? – Mathletics

+0

ý của bạn là gì với các ký tự phụ? –

Trả lời

140

Trong câu hỏi của bạn, bạn viết rằng moment('03:55jojojo', 'HH:mm',true).isValid(); trả về true. Điều này là không chính xác. Vui lòng kiểm tra lại jsfiddle của bạn.

Từ phân tích cú pháp http://momentjs.com/docs/

Moment là rất khoan dung, và điều này có thể dẫn đến hành vi không mong muốn. Kể từ phiên bản 2.3.0, bạn có thể chỉ định boolean cho đối số cuối cùng để làm cho Moment sử dụng phân tích cú pháp nghiêm ngặt. Phân tích cú pháp nghiêm ngặt yêu cầu rằng định dạng và đầu vào khớp chính xác.

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 

Bạn có thể sử dụng cả ngôn ngữ và độ nghiêm ngặt.

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

true (index): 26 true (index): 27 true (index): 29 Đây là đầu ra nhật ký bảng điều khiển: S –

+0

Nếu bạn kiểm tra jsfiddle, bạn sẽ nhận thấy rằng bạn KHÔNG chuyển đúng đối số thứ ba ở bất kỳ đâu, nhưng trong câu hỏi của bạn, bạn nói rằng 'thời điểm ('03: 55jojojo', 'HH: mm', true) .isValid(); 'trả về true. Vui lòng chạy mã chính xác đó trong trình duyệt của bạn - đầu ra là sai. –

+1

Người đàn ông, cảm ơn bạn rất nhiều, thông số thứ ba này của sự thật, đã cứu mạng tôi nhiều lần, chỉ muốn nói rằng vì tôi luôn luôn quay trở lại câu trả lời này. – Kadaj

Các vấn đề liên quan