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
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
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
joshuakcockrell
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
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
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
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
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
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