Я использую moment.js для форматирования даты и времени, здесь у меня есть два значения даты, и я хочу получить определенную функцию, когда одна дата больше другой. Я прочитал большинство их документов, но не нашел функции для достижения этой цели. Я знаю, что это будет там.
Это мой код:
var date_time = 2013-03-24 + 'T' + 10:15:20:12 + 'Z'
var d = moment(date_time).tz('UTC'); // first date
var now = new Date(),
dnow = moment(now).tz('UTC'),
snow = dnow.minute() % 15,
diffnow = 15 - snow,
tonow = moment(dnow).add('minute', diffnow),
ahead30now = moment(tonow).add('minute', 30);
if (d > ahead30now) {
// allow input time
console.log('UTC TIME DB', d.format());
} else {
}
редактировать
var date_time = req.body.date + 'T' + req.body.time + req.body.timezone; // 2014-03-24T01:15:000
var utc_input_time = moment(date_time).utc(); // 2014-03-24T01:15:000
console.log('utc converted date_time', moment(date_time).utc().format("YYYY-MM-DDTHH:mm:SSS"));
var isafter = moment(utc_input_time).isAfter(moment('2014-03-24T01:14:000')); // true
if(isafter === true){
console.log('is after true');
} else {
console.log('is after is false');
}
Здесь я сравниваю две даты, т. 2014-03-24T01:15:000 > 2014-03-24T01:14:000
Е. Ожидаю, что первая больше второй, но она всегда переходит в другое условие. Я не знаю почему?
источник
req.body.timezone
ли что-нибудь кромеZ
? Если так, то?Вы должны быть в состоянии сравнить их напрямую.
Показать фрагмент кода
источник
Object.prototype.valueOf
которые переопределяется в прототипе момента для возврата метки времени эпохи как числа. Так что это похоже наnow.format('x') > date.format('x')
.moment().format("DD/MM/YYYY")
вернет строку, а затем вы сравниваете в алфавитном порядке, а затем 1 декабря наступит раньше 2 января, потому что вы также ведете дни. Не используйте,format()
если вы хотите сравнить моментальные объекты напрямую.Jsfiddle: http://jsfiddle.net/guhokemk/1/
Метод возвращает 1, если dateTimeA больше dateTimeB
Метод возвращает 0, если dateTimeA равен dateTimeB
Метод возвращает -1, если dateTimeA меньше dateTimeB
источник
Важно , чтобы ваша дата и время в правильном формате ISO при использовании любого из запросов momentjs :
isBefore
,isAfter
,isSameOrBefore
,isSameOrAfter
,isBetween
Таким образом, вместо 2014-03-24T01: 14: 000, ваша дата и время должны быть либо:
в противном случае вы можете получить следующее предупреждение об устаревании, и условие оценивается как ложное:
источник
Передайте дату и момент, как это, он будет сравнивать и давать результат. если вы не хотите форматировать, удалите его
источник
Be careful
это не что иное, как сравнение двух струнhttp://momentjs.com/docs/#/query/is-after/
источник
для сравнения даты и времени вы можете использовать
valueOf
функцию момента, которая обеспечивает миллисекунды даты и времени, которая лучше всего подходит для сравнения:источник
источник