446 Stimmen

Wie erhalte ich den Beginn und das Ende des Tages in Javascript?

Wie erhält man den Beginn ( 00:00:00 ) und das Ende ( 23:59:59 ) des heutigen Tages als Zeitstempel ( GMT )? Der Computer verwendet eine lokale Zeit.

823voto

tvanfosson Punkte 506878
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() );

Wenn Sie die UTC-Zeit aus diesen Daten ablesen wollen, können Sie UTC() .

263voto

chridam Punkte 94546

Mit dayjs Bibliothek, Verwendung startOf y endOf Methoden wie folgt:

Lokale GMT:

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

Für UTC:

const utc = require('dayjs/plugin/utc');
dayjs.extend(utc);

const start = dayjs.utc().startOf('day'); 
const end = dayjs.utc().endOf('day'); 

Die Verwendung des (veralteten) momentjs Bibliothek, kann dies mit der startOf() y endOf() Methoden auf das aktuelle Datumsobjekt des Augenblicks, wobei die Zeichenkette 'day' als Argumente:

Lokale GMT:

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

Für UTC:

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

17voto

Emanuel Punkte 1456

Einzeiler - unter Berücksichtigung der lokalen Zeitzone und ohne Bibliotheken

const todayStart = new Date(new Date().setHours(0, 0, 0, 0))
const todayEnd = new Date(new Date().setHours(23, 59, 59, 999))

const tomorrowStart = new Date(new Date(new Date().setHours(0, 0, 0, 0)).setDate(new Date().getDate() + 1))
const tomorrowEnd = new Date(new Date(new Date().setHours(23, 59, 59, 999)).setDate(new Date().getDate() + 1))

const monthStart = new Date(new Date(new Date().getFullYear(), new Date().getMonth(), 1).setHours(0, 0, 0, 0))
const monthEnd = new Date(new Date(new Date().getFullYear(), new Date().getMonth() + 1, 0).setHours(23, 59, 59, 999))

const nextMonthStart = new Date(new Date(new Date().getFullYear(), new Date().getMonth() + 1, 1).setHours(0, 0, 0, 0))
const nextMonthEnd = new Date(new Date(new Date().getFullYear(), new Date().getMonth() + 2, 0).setHours(23, 59, 59, 999))

console.log({
  todayStart,
  todayEnd,
  tomorrowStart,
  tomorrowEnd,
  monthStart,
  monthEnd,
  nextMonthStart,
  nextMonthEnd,
})

15voto

Musa Punkte 2450

Zu Ihrer Information (zusammengefasste Version von Tvanfosson)

es wird das aktuelle Datum zurückgegeben => Datum, wenn Sie die Funktion aufrufen

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()
  }
}

// wie zu verwenden

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

* Es ist anwendbar für Instant time type auf Java8, die Ihre lokale Zeit automatisch konvertieren, abhängig von Ihrer Region (wenn Sie planen, eine globale Anwendung zu schreiben).

14voto

tk120404 Punkte 2895

Die Verwendung des luxon.js Bibliothek kann dasselbe mit startOf- und endOf-Methoden erreicht werden, indem der "Tag" als Parameter übergeben wird

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

entfernen Sie .toUTC(), wenn Sie nur die Ortszeit benötigen

und Sie werden fragen, warum nicht moment.js lautet die Antwort aquí dafür.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X