Korzystam z moment.js, aby sformatować datę, tutaj mam dwie wartości dat i chcę osiągnąć określoną funkcję, gdy jedna data jest większa od drugiej. Przeczytałem większość ich dokumentów, ale nie znalazłem funkcji, aby to osiągnąć. Wiem, że tam będzie.
To jest mój kod:
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 {
}
Edytować
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');
}
Porównuję tutaj dwie daty, tj. 2014-03-24T01:15:000 > 2014-03-24T01:14:000
Spodziewam się, że pierwsza jest większa niż druga, ale zawsze idzie w stan inny. Nie wiem dlaczego
źródło
req.body.timezone
coś innego niżZ
? Jeśli tak to co?Powinieneś być w stanie porównać je bezpośrednio.
Pokaż fragment kodu
źródło
Object.prototype.valueOf
których jest zastępowany w tym momencie prototypem, aby zwrócić znacznik czasu epoki jako liczbę. To jest podobne donow.format('x') > date.format('x')
.moment().format("DD/MM/YYYY")
zwróci ciąg, a następnie porównujesz alfabetycznie, a następnie 1 grudnia nastąpi przed 2 stycznia, ponieważ prowadzisz również z dniami. Nie używaj,format()
jeśli chcesz bezpośrednio porównać obiekt objcts.Jsfiddle: http://jsfiddle.net/guhokemk/1/
Metoda zwraca 1, jeśli dateTimeA jest większe niż dateTimeB
Metoda zwraca 0, jeśli dateTimeA jest równe dateTimeB
Metoda zwraca -1, jeśli dateTimeA jest mniejsze niż dateTimeB
źródło
Ważne jest, aby data i godzina były w odpowiednim formacie ISO podczas korzystania z dowolnego zapytania momentjs :
isBefore
,isAfter
,isSameOrBefore
,isSameOrAfter
,isBetween
Więc zamiast 2014-03-24T01: 14: 000, twoja data i godzina powinna wynosić:
w przeciwnym razie może zostać wyświetlone następujące ostrzeżenie o wycofaniu, a warunek zostanie oceniony jako fałszywy:
źródło
przekazać datę do chwili w ten sposób, to porówna i da wynik. jeśli nie chcesz formatować, usuń go
źródło
Be careful
to nic innego jak porównanie dwóch strunhttp://momentjs.com/docs/#/query/is-after/
źródło
do porównania daty i czasu można użyć
valueOf
funkcji momentu, która zapewnia milisekundy daty i godziny, co jest najlepsze do porównania:źródło
źródło