2014-05-12 23 views
23

12 saat biçiminde iki kez almamı ve bunları karşılaştırmamı gerektiren bir sorunum var, projemizde moment.js var ve başlangıçta bunun önemsiz olduğunu düşündük:İki kez Moment JS ile karşılaştırmak

var beginningTime = moment('8:45am'); 
var endTime = moment('9:00am'); 
console.log(beginningTime.isBefore(endTime)); //false??? 

Fiddle: biz eksik bir şeyhttp://jsfiddle.net/KyleMuir/M4R4z/

var mı? Çözülmesi zor bir sorun olmamalı gibi hissettiriyor. Bizim beginningTime veya endTime üzerinde her an işlevlerini gerçekleştirirken sadece NAN

cevap

40

hep h:mma biçimde zaman ilgileniyor, bunu,

var beginningTime = moment('8:45am', 'h:mma'); 
 
var endTime = moment('9:00am', 'h:mma'); 
 
console.log(beginningTime.isBefore(endTime)); // true 
 
console.log(beginningTime.toDate()); // Mon May 12 2014 08:45:00 
 
console.log(endTime.toDate()); // Mon May 12 2014 09:00:00
<script src="https://cdn.jsdelivr.net/momentjs/2.13.0/moment.min.js"></script>

Bu tarih olarak bugün kullanacağız ... belirtebilirsiniz Farklı günlere yayılıyorsanız işe yaramaz.

JSFiddle

1

sadece konsolu açın ve bu elle yapıyor denemelisiniz diyor:. anı ("08:45") Todate()

Seni verir Geçersiz Tarih, bu yüzden beklenen sonuçları almıyorsunuz. Oysa "2014-05-15 08:45" size bir tarih veriyor.

3

8:45am ve 9:00am geçersiz tarihleri ​​

var beginningTime = moment('8:45am'); 
var endTime = moment('9:00am'); 
console.log(beginningTime.isValid(), endTime.isValid()) // FALSE 

Geçerli bir biçim kullanmak gerekir şunlardır: http://momentjs.com/docs/#/parsing/string/

Ve onlar tutarlı sonuçlar için, http://momentjs.com/docs/#/parsing/string-format/

Örn kullanması gerektiğini düşündürmektedir. ayrıştırılırken

moment("2010-10-20 4:30", "YYYY-MM-DD HH:mm"); // parsed as 4:30 local time 
1

belgelerinde olarak başına ilan edilir an değişken yanlış izin onay formatlar

http://momentjs.com/docs/#/parsing/string/

yerine bunu kullanabilirsiniz

var beginningTime = moment({ 
 
    h: 8, 
 
    s: 45 
 
}); 
 
var endTime = moment({ 
 
    h: 9, 
 
    s: 0 
 
}); 
 
console.log(beginningTime.isBefore(endTime)); //true
<script src="https://cdn.jsdelivr.net/momentjs/2.13.0/moment.min.js"></script>