2015-04-07 18 views
51

Tôi mới tham gia moment.js. Tôi có một đối tượng ngày và nó có một thời gian liên kết với nó. Tôi chỉ muốn kiểm tra xem ngày đó lớn hơn hoặc bằng ngày hôm nay, không bao gồm thời gian khi so sánh.Cách so sánh chỉ ngày tháng trong moment.js

var dateToCompare = 2015-04-06T18:30:00.000Z 

Tôi chỉ muốn kiểm tra xem dateToCompare là bằng hoặc lớn hơn ngày hôm nay. Tôi đã kiểm tra isSame of moment.js, nhưng có vẻ như chuỗi và chỉ có phần ngày. Nhưng tôi không muốn chuyển đổi ngày của tôi thành chuỗi hoặc thao tác thêm. Bởi vì tôi lo lắng rằng javascript có thể làm một cái gì đó bất ngờ khi chuyển đổi ngày đó thành chuỗi (như thêm bù đắp hoặc dst, vv), hoặc có thể là tôi sai.

mẫu isSame() từ tài liệu

moment('2010-10-20').isSame('2010-10-20'); 

Ngoài ra tôi đang tìm kiếm một cái gì đó giống như isSame() và isAfter() kết hợp làm một tuyên bố.

Tôi cần so sánh chỉ sử dụng moment.js.Xin vui lòng không đề xuất so sánh ngày javascript đơn giản.

Trả lời

95

The docs are pretty clear mà bạn chuyển vào thông số thứ hai để chỉ định chi tiết.

Nếu bạn muốn giới hạn độ chi tiết cho đơn vị không quá mili giây, hãy chuyển đơn vị làm thông số thứ hai.

moment('2010-10-20').isAfter('2010-01-01', 'year'); // false 
moment('2010-10-20').isAfter('2009-12-31', 'year'); // true 

Khi tham số thứ hai xác định độ chính xác và không chỉ một giá trị để kiểm tra, sử dụng ngày sẽ kiểm tra năm, tháng và ngày.

Trong trường hợp của bạn, bạn sẽ vượt qua 'day' làm tham số thứ hai.

+1

Cảm ơn! có vẻ như tôi không phải chuyển đổi thành chuỗi. Nhưng chúng ta có phương pháp chung cho isSame() và isAfter() – NoobGeek

+4

@NoobGeek, không, thật khó để viết 'm.isSau (x, 'ngày') || m.isSame (x, 'ngày') '? – zzzzBov

+1

Tôi đã sử dụng nó. Cảm ơn! chỉ muốn xem liệu có một chức năng phổ biến, không phải là khó sử dụng cả hai. – NoobGeek

9

Trong khi đó bạn có thể sử dụng phương pháp isSameOrAfter:

moment('2010-10-20').isSameOrAfter('2010-10-20', 'day'); 
Các vấn đề liên quan