Wie Sie in plugin source sehen können, konvertiert es zuerst Zeichenfolgeninhalt in eine Zahl und führt dann Addition durch. Sie sollten die Behandlung von Zellwerten erweitern, indem Sie Ihre formatierten Werte HH: MM: SS analysieren (z. B. durch eine Regexp), dann in Zeitintervall in Sekunden umwandeln (HH * 24 + MM * 60 + SS), dann diese Werte summieren, und wandle es dann zurück in Stunden/Minuten/Sekunden.
Sie können sum
Funktion wie folgt aktualisiert:
jQuery.fn.dataTable.Api.register('sum()', function () {
return this.flatten().reduce(function (a, b) {
var timeRegexp = /^(\d{2}):(\d{2}):(\d{2})$/
var matches = a.match(timeRegexp);
if (matches) {
var hh = matches[1], mm = matches[2], ss = matches[3];
var intervalAsSeconds = hh * 24 + mm * 60 + ss;
return b + intervalAsSeconds;
}
if (typeof a === 'string') {
a = a.replace(/[^\d.-]/g, '') * 1;
}
if (typeof b === 'string') {
b = b.replace(/[^\d.-]/g, '') * 1;
}
return a + b;
}, 0);
});
Um Summe in Sekunden zurück in HH zu konvertieren: MM: SS Sie die folgende Funktion verwenden:
function secondsToTime(seconds) {
var hours = Math.floor(seconds/3600);
var minutes = Math.floor((seconds % 3600)/60);
var seconds = Math.floor(seconds % 60);
return (hours < 10 ? "0" + hours : hours) + ":" +
(minutes < 10 ? "0" + minutes : minutes) + ":" +
(seconds < 10 ? "0" + seconds : seconds);
}
Einige Beispiele für Rückumwandlung :
console.log(secondsToTime(45)) // 00:00:45
console.log(secondsToTime(125)) // 00:02:05
console.log(secondsToTime(3600)) // 01:00:00
console.log(secondsToTime(3725)) // 01:02:05
so sagt u die Zahl in 11:62:65 und dann erstellen Formeln aufgeteilt Ausgabe wie 12.03.05 aussehen zu lassen? Hast du ein Code-Snippet, mit dem ich anfangen kann? Vielen Dank! –
Die Antwort wird aktualisiert (Umwandlung der Zellenwerte in Sekunden und zurück zu HH: MM: SS werden hinzugefügt). Dies ist einfach JavaScript, und ich glaube, Sie können auch einige Hilfsfunktionen von moment.js verwenden (da Sie es in Tags erwähnt haben), um Intervalle einfacher zu behandeln. – Alexey
@Alexey Der obige Code wirft den Fehler als TypeError: a.match ist keine Funktion. Irgendeine Lösung? – Steffi