130 votes

Vérifier si la date est inférieure à une heure ?

Existe-t-il un moyen de vérifier si une date date moins d'une heure comme ceci ?

// old date
var olddate = new Date("February 9, 2012, 12:15");

// current date
var currentdate = new Date();

if (olddate >= currentdate - 1 hour) {
    alert("newer than 1 hour");
else {
    alert("older than 1 hour");
}

Autre question : existe-t-il un moyen d'ajouter des heures à une date comme celle-ci ?

var olddate = new Date("February 9, 2012, 12:15") + 15 HOURS; // output: February 10, 2012, 3:15

0 votes

Votre deuxième question est une duplication possible de stackoverflow.com/questions/1050720/

220voto

Mike Samuel Points 54712

Définir

var ONE_HOUR = 60 * 60 * 1000; /* ms */

vous pouvez alors faire

((new Date) - myDate) < ONE_HOUR

Pour obtenir une heure d'un rendez-vous, essayez

new Date(myDate.getTime() + ONE_HOUR)

0 votes

Les dates antérieures à l'heure ne sont-elles pas également acceptées ? (c'est-à-dire un différentiel négatif)

1 votes

@information_interchange, oui. Si n heures passées sont identiques à -n heures dans le futur, alors toutes les dates futures sont inférieures à une heure.

78voto

Gorka Hernandez Points 2327

Utilisation de la syntaxe ES6 :

const lessThanOneHourAgo = (date) => {
    const HOUR = 1000 * 60 * 60;
    const anHourAgo = Date.now() - HOUR;

    return date > anHourAgo;
}

L'utilisation de la Moment bibliothèque :

const lessThanOneHourAgo = (date) => {
    return moment(date).isAfter(moment().subtract(1, 'hours'));
}

Syntaxe abrégée avec Moment :

const lessThanOneHourAgo = (date) => moment(date).isAfter(moment().subtract(1, 'hours'));

2 votes

Cela fonctionne également avec dayjs . const lessThanOneHourAgo = (date) => { return dayjs(date).isAfter(dayjs().subtract(1, 'hours')); };

0 votes

C'était assez proche de ce dont j'avais besoin. Il y a plus de X heures, j'ai donc ajouté isBefore au lieu de isAfter !

10voto

Michael Cole Points 351

Les bibliothèque du moment peut vraiment aider à l'exprimer. L'astuce consiste à prendre la date, à ajouter l'heure et à voir si c'est avant ou après maintenant :

  lastSeenAgoLabel: function() {
    var d = this.lastLogin();
    if (! moment(d).isValid()) return 'danger';  // danger if not a date.
    if (moment(d).add(10, 'minutes').isBefore(/*now*/)) return 'danger'; // danger if older than 10 mins
    if (moment(d).add(5,  'minutes').isBefore(/*now*/)) return 'warning'; // warning if older than 5mins
    return 'success';  // Looks good!
  },

3voto

Umang Loriya Points 446

L'utilisation du moment sera beaucoup plus facile dans ce cas, vous pouvez essayer ceci :

    let hours = moment().diff(moment(yourDateString), 'hours');

Il vous donnera des valeurs entières comme 1,2,5,0etc afin que vous puissiez facilement utiliser la vérification des conditions comme :

if(hours < 1) {

De plus, vous pouvez obtenir un résultat plus précis du décalage horaire (en décimales comme 1.2,1.5,0.7etc) pour obtenir ce type de résultat, utilisez cette syntaxe :

let hours = moment().diff(moment(yourDateString), 'hours', true);

N'hésitez pas à me contacter si vous avez d'autres questions.

1voto

Krishna N Points 218
//for adding hours to a date
Date.prototype.addHours= function(hrs){
    this.setHours(this.getHours()+hrs);
    return this;
}

Appeler la fonction comme suit :

//test alert(new Date().addHours(4));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X