Runde ein Date() auf die nächsten 5 Minuten in Javascript

Lesezeit: 4 Minuten

Benutzer-Avatar
Jick Lee

Verwendung einer Date() Wie kann ich beispielsweise eine Zeit auf die nächsten fünf Minuten runden?

Beispiel: Wenn es 16:47 Uhr ist, wird die Uhrzeit auf 16:45 Uhr eingestellt

  • Benutzt du Date Instanzen oder Strings?

    – Sime Vidas

    28. Mai 2012 um 19:12 Uhr

  • Vielen Dank für die schnelle Antwort, ja, ich verwende die Instanz Date().

    – JickLee

    28. Mai 2012 um 19:13 Uhr

  • Es ist nicht erforderlich, den Fragentitel zu bearbeiten, um die Frage als “Gelöst” zu markieren, was durch Auswahl der richtigen Antwort angezeigt werden kann 🙂

    – Gareth

    28. Mai 2012 um 19:27 Uhr

  • Mögliches Duplikat von Wie man die Zeit in JavaScript auf die nächste Viertelstunde rundet?

    – Liam

    18. Januar 2019 um 10:30 Uhr

Das ist ziemlich einfach, wenn Sie bereits eine haben Date Objekt:

var coeff = 1000 * 60 * 5;
var date = new Date();  //or use any other date
var rounded = new Date(Math.round(date.getTime() / coeff) * coeff)

  • @Jick Wenn eine Antwort für Sie funktioniert, sollten Sie auf das grüne Häkchen klicken, um sie als akzeptierte Antwort zu markieren. Auf diese Weise erhalten sowohl Sie als auch der Antwortende einen kleinen Schub für Ihren Ruf und Sie bekommen ein schönes flauschiges Gefühl im Inneren

    – Gareth

    28. Mai 2012 um 19:26 Uhr

  • Falls Sie es die ganze Zeit aufrunden möchten. Benutz einfach Math.ceil Anstatt von Math.round. So können Sie z. B. immer auf 10 Minuten aufrunden.

    – Hendrik

    1. Dezember 2014 um 23:11 Uhr

  • Sie müssen nicht einmal verwenden getTime wie es verwendet wird valueOf implizit, z new Date(Math.round(date / coeff) * coeff)

    – Phil

    21. März 2018 um 6:29 Uhr

  • TypeScript beschwert sich über linkshändige Arithmetik, also behebt das Hinzufügen von getTime() diesen Fehler tatsächlich. Nicht, dass ich die Verwendung von TS für normale Anwendungen befürworte, aber ich baue eine Finanzanwendung, also bin ich besonders vorsichtig.

    – SacWebDeveloper

    27. Dezember 2020 um 20:47 Uhr


Benutzer-Avatar
joshuakcockrell

Runden Sie auf die nächsten x Minuten

Hier ist eine Methode, die ein Datumsobjekt auf die nächsten x Minuten rundet, oder wenn Sie ihm kein Datum geben, wird es die aktuelle Zeit runden.

let getRoundedDate = (minutes, d=new Date()) => {

  let ms = 1000 * 60 * minutes; // convert minutes to ms
  let roundedDate = new Date(Math.round(d.getTime() / ms) * ms);

  return roundedDate
}


// USAGE //

// Round existing date to 5 minutes
getRoundedDate(5, new Date()); // 2018-01-26T00:45:00.000Z

// Get current time rounded to 30 minutes
getRoundedDate(30); // 2018-01-26T00:30:00.000Z

  • Hinweis: Dies funktioniert mit der UTC-Zeit. Es spielt keine Rolle, auf die nächsten fünf Minuten zu kürzen, funktioniert aber nicht, wenn auf die Stunde in Ortszeit gekürzt wird, da einige Zeitzonen keine vollen Stunden sind.

    – Eli Algranti

    26. August 2020 um 7:57 Uhr

Benutzer-Avatar
peter.bartos

Mit ES6 und Teilfunktionen kann es elegant werden. Wählen Sie, ob auf den nächsten oder immer nach unten/oben gerundet werden muss:

const roundTo = roundTo => x => Math.round(x / roundTo) * roundTo;    
const roundDownTo = roundTo => x => Math.floor(x / roundTo) * roundTo;
const roundUpTo = roundTo => x => Math.ceil(x / roundTo) * roundTo;

const roundTo5Minutes = roundTo(1000 * 60 * 5);
const roundDownTo5Minutes = roundDownTo(1000 * 60 * 5);
const roundUpTo5Minutes = roundUpTo(1000 * 60 * 5);

const now = new Date();
const msRound = roundTo5Minutes(now)
const msDown = roundDownTo5Minutes(now)
const msUp = roundUpTo5Minutes(now)

console.log(now);
console.log(new Date(msRound));
console.log(new Date(msDown));
console.log(new Date(msUp));

  • Gute Antwort! Ich wollte auf die nächsten 15 Minuten abrunden, und das hat funktioniert

    – Vatsug

    5. März 2020 um 11:53 Uhr

Benutzer-Avatar
Benutzer3767296

Ich weiß, es ist etwas spät für eine Antwort, aber vielleicht kann es jemandem helfen. Wenn Sie das Protokoll wie folgt aufnehmen

new Date().getMinutes()

Sie können die letzten 5 Minuten durchnehmen

new Date().getMinutes() - (new Date().getMinutes()%5)

Wahrscheinlich weniger effizient, aber hier ist eine andere Alternative:

debug('Current timestamp:', timestamp);

timestamp.setMilliseconds(0);
timestamp.setSeconds(0);
timestamp.setMinutes(Math.round(timestamp.getMinutes() / 5) * 5);

debug('Rounded timestamp:', timestamp);
Current timestamp: 2019-10-22T09:47:17.989Z
Rounded timestamp: 2019-10-22T09:45:00.000Z

Benutzer-Avatar
Phhu

Datum-fns hat jetzt eine Funktion, die Minuten auf Datumsangaben rundet. Sehen https://date-fns.org/v2.21.3/docs/roundToNearestMinutes

const roundToNearestMinutes = require('date-fns/roundToNearestMinutes')
console.log(roundToNearestMinutes(new Date(), {nearestTo: 5}));
// e.g. 2021-05-19T22:45:00.000Z

Benutzer-Avatar
Shubham Rai

Verwenden Sie diese Methode, um den nächsten 5-Minuten-Zyklus mit reinem JS zu erhalten

function calculateNextCycle(interval) {
    const timeStampCurrentOrOldDate = Date.now();
    const timeStampStartOfDay = new Date().setHours(0, 0, 0, 0);
    const timeDiff = timeStampCurrentOrOldDate - timeStampStartOfDay;
    const mod = Math.ceil(timeDiff / interval);
    return new Date(timeStampStartOfDay + (mod * interval));
}

console.log(calculateNextCycle(5 * 60 * 1000)); // pass in milliseconds

1121330cookie-checkRunde ein Date() auf die nächsten 5 Minuten in Javascript

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy