web-dev-qa-db-fra.com

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) d'aujourd'hui en horodatage (GMT)? Ordinateur utiliser une heure locale.

178
Bdfy
var start = new Date();
start.setHours(0,0,0,0);

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

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

Si vous avez besoin d’obtenir l’heure UTC, vous pouvez utiliser UTC().

373
tvanfosson

À l'aide de la bibliothèque momentjs, vous pouvez utiliser les méthodes startOf() et endOf() de l'objet de date du moment, en passant la chaîne 'day' comme arguments:

Heure locale GMT:

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

Pour UTC:

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

Si vous êtes simplement intéressé par les horodatages, vous pouvez également le faire, ce qui peut être facilement adapté pour différents intervalles (heure: 1000 * 60 * 60, 12 heures: 1000 * 60 * 60 * 12, etc.)

const interval = 1000 * 60 * 60 * 24; // 24 hours in milliseconds

let startOfDay = Math.floor(Date.now() / interval) * interval;
let endOfDay = startOfDay + interval - 1; // 23:59:59:9999
5
afinemonkey

En utilisant la bibliothèque luxon.js , il est possible d’obtenir la même chose en utilisant les méthodes startOf et endOf en passant le paramètre 'day' 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

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

et vous pouvez demander pourquoi pas moment.js , la réponse est ici pour cela.

3
tk120404

Dans 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');
2
Ashutosh Jha

Je préfère utiliser date-fns library pour manipuler les dates. C'est vraiment un excellent outil modulaire et cohérent. Vous pouvez obtenir le début et la fin de la journée de cette façon:

var startOfDay = dateFns.startOfDay;
var endOfDay = dateFns.endOfDay;

console.log('start of day ==> ', startOfDay(new Date('2015-11-11')));
console.log('end of day ==> ', endOfDay(new Date('2015-11-11')));
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.29.0/date_fns.min.js"></script>

0
Mikhail Shabrikov

FYI (version fusionnée de Tvanfosson)

il retournera la date réelle => date à laquelle 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 Instant time sur Java8 qui convertit automatiquement votre heure locale en fonction de votre région (si vous envisagez d'écrire l'application globale)

0
Musa