423 votes

Comment obtenir le début et la fin de la journée en Javascript ?

Comment obtenir le début ( 00:00:00 ) et la fin ( 23:59:59 ) du jour en horodatage ( GMT ) ? L'ordinateur utilise une heure locale.

787voto

tvanfosson Points 268301
var start = new Date();
start.setUTCHours(0,0,0,0);

var end = new Date();
end.setUTCHours(23,59,59,999);

alert( start.toUTCString() + ':' + end.toUTCString() );

Si vous avez besoin d'obtenir l'heure UTC à partir de ceux-ci, vous pouvez utiliser UTC() .

45 votes

Je recommande que var end = new Date(start.getTime()); pour s'assurer que vous avez le même point dans le temps - dans le cas où vous changez les dates entre l'initialisation de début et de fin - cela peut arriver - juste une bonne habitude à prendre

0 votes

@MartynDavis quand tout est normal, il y a généralement 0-2 ticks entre les deux, mais cela dépend de l'activité du processeur, il est donc logique de le faire si vous êtes préoccupé par la précision d'un tick.

25 votes

Je recommande également d'utiliser setUTCHours au lieu de setHours pour obtenir le temps universel

259voto

chridam Points 3903

Utilisation de la momentjs cela peut être réalisé avec la bibliothèque startOf() y endOf() sur l'objet date du moment, en passant la chaîne de caractères 'day' comme arguments :

GMT local :

var start = moment().startOf('day'); // set to 12:00 am today
var end = moment().endOf('day'); // set to 23:59 pm today

Pour l'UTC :

var start = moment.utc().startOf('day'); 
var end = moment.utc().endOf('day');

29 votes

Momentjs est le guichet unique pour tout ce qui concerne la gestion du temps en JavaScript. Cela vaut toujours la peine de l'importer.

8 votes

Et nous devrions utiliser .toDate() à la fin pour obtenir la date. var end = moment().endOf('day').toDate();

5 votes

Ajouter .unix() à la fin pour obtenir le timestamp unix en secondes :) comme ceci : moment().startOf('day').unix()

15voto

tk120404 Points 143

Utilisation de la luxon.js la même chose peut être réalisée en utilisant les méthodes startOf et endOf en passant le 'jour' comme paramètre.

var DateTime = luxon.DateTime;
DateTime.local().startOf('day').toUTC().toISO(); //2017-11-16T18:30:00.000Z
DateTime.local().endOf('day').toUTC().toISO(); //2017-11-17T18:29:59.999Z
DateTime.fromISO(new Date().toISOString()).startOf('day').toUTC().toISO(); //2017-11-16T18:30:00.000Z

supprimer .toUTC() si vous n'avez besoin que de l'heure locale

et vous pouvez demander pourquoi pas moment.js La réponse est aquí pour ça.

0 votes

Le lien expliquant pourquoi ne pas utiliser moment.js est cassé. La réponse courte est : Moment Js a récemment annoncé que la bibliothèque était désormais obsolète. Luxon est magnifique !

14voto

Musa Points 820

FYI (version fusionnée de Tvanfosson)

il retournera la date actuelle => date lorsque vous appelez la fonction

export const today = {
  iso: {
    start: () => new Date(new Date().setHours(0, 0, 0, 0)).toISOString(),
    now: () => new Date().toISOString(),
    end: () => new Date(new Date().setHours(23, 59, 59, 999)).toISOString()
  },
  local: {
  start: () => new Date(new Date(new Date().setHours(0, 0, 0, 0)).toString().split('GMT')[0] + ' UTC').toISOString(),
  now: () => new Date(new Date().toString().split('GMT')[0] + ' UTC').toISOString(),
  end: () => new Date(new Date(new Date().setHours(23, 59, 59, 999)).toString().split('GMT')[0] + ' UTC').toISOString()
  }
}

// comment utiliser

today.local.now(); //"2018-09-07T01:48:48.000Z" BAKU +04:00
today.iso.now(); // "2018-09-06T21:49:00.304Z" * 

* Il est applicable pour le type d'heure instantanée sur Java8 qui convertit automatiquement votre heure locale en fonction de votre région (si vous prévoyez d'écrire une application globale).

10voto

Ashutosh Jha Points 3560

Sur MomentJs Nous pouvons le déclarer comme :

   const start = moment().format('YYYY-MM-DD 00:00:01');
   const end = moment().format('YYYY-MM-DD 23:59:59');

0 votes

Tellement plus utile !

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