Ich verwende moment.js, um meine Datums- und Uhrzeitangabe zu formatieren. Hier habe ich zwei Datumswerte und möchte eine bestimmte Funktion erreichen, wenn ein Datum größer als das andere ist. Ich habe die meisten ihrer Dokumente gelesen, aber nicht die Funktion gefunden, um dies zu erreichen. Ich weiß, dass es dort sein wird.
Das ist mein Code:
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 {
}
Bearbeiten
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');
}
Hier vergleiche ich zwei Daten, dh ich 2014-03-24T01:15:000 > 2014-03-24T01:14:000
erwarte, dass das erste größer als das zweite ist, aber es geht immer zum anderen Zustand. Ich weiß nicht warum?
quelle
req.body.timezone
jemals etwas anderes alsZ
? Wenn ja, was?Sie sollten sie direkt vergleichen können.
Code-Snippet anzeigen
quelle
Object.prototype.valueOf
die im Moment der Prototyp überschrieben wird, um einen Epochenzeitstempel als Zahl zurückzugeben. Das ist also ähnlich wienow.format('x') > date.format('x')
.moment().format("DD/MM/YYYY")
gibt eine Zeichenfolge zurück und dann vergleichen Sie alphabetisch und dann würde der 1. Dezember vor dem 2. Januar kommen, weil Sie auch mit Tagen führen. Nicht verwenden,format()
wenn Sie die Momentobjekte direkt vergleichen möchten.Jsfiddle: http://jsfiddle.net/guhokemk/1/
Die Methode gibt 1 zurück, wenn dateTimeA größer als dateTimeB ist
Die Methode gibt 0 zurück, wenn dateTimeA gleich dateTimeB ist
Die Methode gibt -1 zurück, wenn dateTimeA kleiner als dateTimeB ist
quelle
Es ist wichtig , dass Ihr Datetime in dem richtigen ist ISO - Format , wenn eine der mit momentjs Abfragen :
isBefore
,isAfter
,isSameOrBefore
,isSameOrAfter
,isBetween
Anstelle von 2014-03-24T01: 14: 000 sollte Ihre Datumszeit also entweder:
Andernfalls erhalten Sie möglicherweise die folgende Abwertungswarnung, und die Bedingung wird als falsch bewertet:
quelle
Übergeben Sie das Datum auf einen solchen Moment, um es zu vergleichen und das Ergebnis zu erhalten. Wenn Sie das Format nicht möchten, entfernen Sie es
quelle
Be careful
Dies ist nichts anderes als ein Vergleich von zwei Saitenhttp://momentjs.com/docs/#/query/is-after/
quelle
Für den Vergleich von Datum und Uhrzeit können Sie die
valueOf
Funktion des Augenblicks verwenden, die Millisekunden der Datums- und Uhrzeitangabe liefert. Dies ist am besten für den Vergleich geeignet :quelle
quelle