J'utilise moment.js pour formater ma date et heure, ici j'ai deux valeurs de date, et je veux réaliser une fonction particulière quand une date est supérieure à l'autre. J'ai lu la plupart de leurs documents, mais je n'ai pas trouvé la fonction pour y parvenir. Je sais que ce sera là.
Voici mon 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 {
}
Éditer
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');
}
Ici, je compare deux dates, c'est-à 2014-03-24T01:15:000 > 2014-03-24T01:14:000
- dire que je m'attends à ce que la première soit supérieure à la seconde, mais elle passe toujours à la condition else. Je ne sais pas pourquoi?
la source
req.body.timezone
ce autre chose queZ
? Si oui, quoi?Vous devriez pouvoir les comparer directement.
Afficher l'extrait de code
la source
Object.prototype.valueOf
lesquelles est remplacé dans le prototype du moment pour renvoyer un horodatage d'époque sous forme de nombre. C'est donc similaire ànow.format('x') > date.format('x')
.moment().format("DD/MM/YYYY")
renverra une chaîne, puis vous comparez par ordre alphabétique, puis le 1er décembre viendrait avant le 2 janvier, car vous menez également avec les jours. Ne l'utilisez pasformat()
si vous souhaitez comparer directement les objets du moment.Jsfiddle: http://jsfiddle.net/guhokemk/1/
La méthode renvoie 1 si dateTimeA est supérieur à dateTimeB
La méthode renvoie 0 si dateTimeA est égal à dateTimeB
La méthode renvoie -1 si dateTimeA est inférieure à dateTimeB
la source
Il est important que votre datetime est dans le bon format ISO lorsque vous utilisez l' une des requêtes momentjs :
isBefore
,isAfter
,isSameOrBefore
,isSameOrAfter
,isBetween
Ainsi, au lieu de 2014-03-24T01: 14: 000, votre datetime devrait être soit:
sinon, vous pouvez recevoir l'avertissement de dépréciation suivant et la condition sera évaluée comme fausse:
la source
passer la date à un moment comme celui-ci, il comparera et donnera un résultat. si vous ne voulez pas de format, supprimez-le
la source
Be careful
ce n'est rien d'autre que de comparer deux cordeshttp://momentjs.com/docs/#/query/is-after/
la source
pour la comparaison date-heure, vous pouvez utiliser la
valueOf
fonction du moment qui fournit les millisecondes de la date-heure, ce qui est préférable pour la comparaison:la source
la source