So konvertieren Sie den dezimalen Stundenwert in hh:mm:ss

Lesezeit: 3 Minuten

Wie kann ich einen dezimalen Stundenwert wie 1,6578 in jquery oder Javascript in hh: mm: ss umwandeln?

Ich habe es nur mit diesem Code zu hh: mm geschafft:

var decimaltime= "1.6578";
var hrs = parseInt(Number(decimaltime));
var min = Math.round((Number(decimaltime)-hrs) * 60);
var clocktime = hrs+':'+min;

Benutzeravatar von Andrew Willems
Andreas Willems

Anstatt die Berechnungen selbst durchzuführen, verwenden Sie die integrierte Funktionalität, um die Sekunden auf ein beliebiges Datum eines Date-Objekts zu setzen, es in eine Zeichenfolge umzuwandeln und den Datumsteil abzuschneiden, sodass nur die Zeichenfolge hh:mm:ss übrig bleibt.

var decimalTimeString = "1.6578";
var n = new Date(0,0);
n.setSeconds(+decimalTimeString * 60 * 60);
document.write(n.toTimeString().slice(0, 8));

  • Wenn Sie nur Stunden und Minuten (hh:mm) möchten, können Sie verwenden n.setMinutes(+decimalTimeString * 60); var result = n.toTimeString().slice(0, 5);

    – Stevoisiak

    16. Juli 2018 um 17:33 Uhr


Benutzeravatar von brso05
brso05

Du könntest so etwas machen:

var decimalTimeString = "1.6578";
var decimalTime = parseFloat(decimalTimeString);
decimalTime = decimalTime * 60 * 60;
var hours = Math.floor((decimalTime / (60 * 60)));
decimalTime = decimalTime - (hours * 60 * 60);
var minutes = Math.floor((decimalTime / 60));
decimalTime = decimalTime - (minutes * 60);
var seconds = Math.round(decimalTime);
if(hours < 10)
{
	hours = "0" + hours;
}
if(minutes < 10)
{
	minutes = "0" + minutes;
}
if(seconds < 10)
{
	seconds = "0" + seconds;
}
alert("" + hours + ":" + minutes + ":" + seconds);

Benutzeravatar von Dani Amsalem
Daniel Amsalem

Ich fand, dass diese Funktion sehr gut funktionierte, um meinen Dezimalwert von Sekunden in eine Standardzeitzeichenfolge von hh: mm: ss umzuwandeln

function formatDuration(seconds) {
  return new Date(seconds * 1000).toISOString().substring(11, 11 + 8);
}
const secondsInDecimal = 1.6578;
formatDuration(secondsInDecimal);

// "00:00:01"

Verweise:

Verfahren:

  1. new Date(seconds * 1000) gibt diese Zeichenfolge zurück "Wed Dec 31 1969 19:00:01 GMT-0500 (Eastern Standard Time)"
  2. toISOString() ist eine Methode für das Date-Objekt, die die zurückgegebene Zeichenfolge ändert in "1970-01-01T00:00:01.657Z". Dies ist eine vereinfachte Zeichenfolge, die von Nr. 1 oben zurückgegeben wird.
  3. Das Ausführen von substring() für diesen String gibt einen Teil davon ab dem 11. Index für eine Länge von 8 weiteren Indizes (Indizes) zurück. Dieser Wert ist, "00:00:01".

Ben in CAs Benutzeravatar
Ben in CA

Mir ist klar, dass dies nicht genau das ist, was das ursprüngliche Poster benötigte, aber ich musste Tage, Stunden und Minuten aus einer Dezimalzeit erhalten, die ich dann für Berechnungen und das Festlegen eines Datumsobjekts verwenden konnte. Viele andere Beiträge verwenden veraltete Methoden mit Strings und Slicing usw.

const decimalHours = 27.33;
const n = new Date(0,0);
n.setMinutes(+Math.round(decimalHours * 60)); 
const days = (n.getDate() - 1)
const hours = n.getHours()
const minutes = n.getMinutes()
console.log("Days: ",days, "Hours: ",hours, "Minutes: ",minutes)
const decimalHours = 4.33;
const n = new Date(0,0);
n.setMinutes(+Math.round(decimalHours * 60)); 
const days = (n.getDate() - 1)
const hours = n.getHours()
const minutes = n.getMinutes()
console.log("Days: ",days, "Hours: ",hours, "Minutes: ",minutes)

Notiz dass dies nicht für Stundenwerte über einen Monat ausgelegt ist.

Das funktioniert für meinen Zweck

function formatHoursMinutesSeconds(num){
  var hours = Math.floor(num * 24);
  var minutes = Math.floor(((num * 24) - hours) * 60);
  var seconds = Math.floor(((((num * 24) - hours) * 60)-minutes)*60);

  return (hours + ":" + minutes.toString().padStart(2, '0') + ":" + 
  seconds.toString().padStart(2, '0'));
 }

1446470cookie-checkSo konvertieren Sie den dezimalen Stundenwert in hh:mm:ss

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

Privacy policy