1131 Stimmen

Wie kann man 30 Minuten zu einem JavaScript-Datumsobjekt hinzufügen?

Ich möchte ein Datumsobjekt erhalten, das 30 Minuten später als ein anderes Datumsobjekt ist. Wie kann ich das mit JavaScript erreichen?

63voto

Jacobi Punkte 1388

Ich erstelle immer 7 Funktionen, um mit Datum in JS zu arbeiten:
addSeconds , addMinutes , addHours , addDays , addWeeks , addMonths , addYears .

Ein Beispiel können Sie hier sehen: http://jsfiddle.net/tiagoajacobi/YHA8x/

Wie zu verwenden:

var now = new Date();
console.log(now.addMinutes(30));
console.log(now.addWeeks(3));

Dies sind die Funktionen:

Date.prototype.addSeconds = function(seconds) {
  this.setSeconds(this.getSeconds() + seconds);
  return this;
};

Date.prototype.addMinutes = function(minutes) {
  this.setMinutes(this.getMinutes() + minutes);
  return this;
};

Date.prototype.addHours = function(hours) {
  this.setHours(this.getHours() + hours);
  return this;
};

Date.prototype.addDays = function(days) {
  this.setDate(this.getDate() + days);
  return this;
};

Date.prototype.addWeeks = function(weeks) {
  this.addDays(weeks*7);
  return this;
};

Date.prototype.addMonths = function (months) {
  var dt = this.getDate();
  this.setMonth(this.getMonth() + months);
  var currDt = this.getDate();
  if (dt !== currDt) {  
    this.addDays(-currDt);
  }
  return this;
};

Date.prototype.addYears = function(years) {
  var dt = this.getDate();
  this.setFullYear(this.getFullYear() + years);
  var currDt = this.getDate();
  if (dt !== currDt) {  
    this.addDays(-currDt);
  }
  return this;
};

47voto

Mansour Alnasser Punkte 3261

Einzeiliger Code

  var afterSomeMinutes = new Date(new Date().getTime() + minutes * 60000);

wobei minutes ist eine Zahl

30voto

Duncan Lukkenaer Punkte 8655

Moment.js nicht mehr verwenden

Wie in anderen guten Antworten empfohlen, ist es in den meisten Fällen am besten, eine Bibliothek zu benutzen, wenn es um Daten geht. Es ist jedoch wichtig zu wissen, dass Moment.js ab September 2020 als レガシー und sollte bei neuen Projekten nicht mehr verwendet werden.

Ich zitiere die Erklärung von Moment in ihrem offizielle Dokumente :

Wir möchten davon abraten, Moment in Zukunft in neuen Projekten zu verwenden. [...] Wir betrachten Moment jetzt generell als ein Legacy-Projekt im Wartungsmodus. Es ist nicht mort aber es ist in der Tat fertig .

Moderne Bibliotheken

Im Folgenden finden Sie von Moment empfohlene Alternativen.

Luxon

Luxon kann als die Evolution von Moment betrachtet werden. Der Autor ist Isaac Cambron , ein langjähriger Mitarbeiter von Moment. Bitte lesen Warum gibt es Luxon? und die Für Moment-Benutzer Seiten in der Luxon-Dokumentation.

  • Örtlichkeiten: Intl bereitgestellt
  • Zeitzonen: Intl bereitgestellt

    import {DateTime} from 'luxon'

    function addMinutes(date, minutes) { return DateTime.fromJSDate(date).plus({minutes}).toJSDate() }

Tag.js

Day.js ist als minimalistischer Ersatz für Moment.js gedacht und verwendet eine ähnliche API. Es ist kein sofortiger Ersatz, aber wenn Sie mit der API von Moment vertraut sind und schnell loslegen wollen, sollten Sie Day.js in Betracht ziehen.

  • Örtlichkeiten: Benutzerdefinierte Datendateien, die individuell importiert werden können
  • Zeitzonen: Intl zur Verfügung gestellt, über ein Plugin

    import dayjs from 'dayjs'

    function addMinutes(date, minutes) { return dayjs(date).add(minutes, 'minutes').toDate() }

datum-fns

Date-fns bietet eine Reihe von Funktionen zur Manipulation von JavaScript Date Objekte. Weitere Einzelheiten finden Sie unter "Warum date-fns?" auf der date-fns-Homepage.

  • Örtlichkeiten: Benutzerdefinierte Datendateien, die individuell importiert werden können
  • Zeitzonen: Intl über eine separate Begleitbibliothek bereitgestellt

    import {addMinutes} from 'date-fns'

    function addMinutesDemo(date, minutes) { return addMinutes(date, minutes) }

js-Joda

js-Joda ist eine JavaScript-Portierung von Javas Drei-Zehn-Backport die die Grundlage für die JSR-310-Implementierung von Java SE 8 ist. java.time Paket. Wenn Sie vertraut sind mit java.time , ジョダイム ou Noda Zeit finden Sie js-Joda vergleichbar.

  • Örtlichkeiten: Benutzerdefinierte Datendateien über ein Zusatzmodul
  • Zeitzonen: Benutzerdefinierte Datendateien über Add-on-Modul

    import {LocalDateTime, nativeJs, convert} from '@js-joda/core'

    function addMinutes(date, minutes) { return convert( LocalDateTime.from( nativeJs(date) ).plusMinutes(minutes) ).toDate() }

24voto

John Williams Punkte 10750

Einzeiler ohne Hilfsmittel:

new Date(+new Date() + 60000*15) // +15 minutes

20voto

tsacodes Punkte 340

Der einfachste Weg zur Lösung ist die zu erkennen, dass in Javascript Daten nur Zahlen sind. Es beginnt 0 ou 'Wed Dec 31 1969 18:00:00 GMT-0600 (CST) . Jede 1 steht für eine Millisekunde. Sie können Millisekunden addieren oder subtrahieren, indem Sie den Wert abrufen und ein neues Datum mit diesem Wert instanziieren. Auf diese Weise lässt es sich ziemlich einfach verwalten.

const minutesToAdjust = 10;
const millisecondsPerMinute = 60000;
const originalDate = new Date('11/20/2017 10:00 AM');
const modifiedDate1 = new Date(originalDate.valueOf() - (minutesToAdjust * millisecondsPerMinute));
const modifiedDate2 = new Date(originalDate.valueOf() + (minutesToAdjust * millisecondsPerMinute));

console.log(originalDate); // Mon Nov 20 2017 10:00:00 GMT-0600 (CST)
console.log(modifiedDate1); // Mon Nov 20 2017 09:50:00 GMT-0600 (CST)
console.log(modifiedDate2); // Mon Nov 20 2017 10:10:00 GMT-0600 (CST)

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