Saya ingin mengonversi durasi waktu, yaitu, jumlah detik ke string waktu yang dipisahkan oleh titik dua [jj: mm: dd] Saya menemukan beberapa jawaban yang berguna di sini tetapi mereka semua berbicara tentang konversi ke format x jam dan x menit. Jadi, apakah ada cuplikan kecil yang melakukan ini di jQuery atau hanya JavaScript mentah?
Jawaban:
String.prototype.toHHMMSS = function [] {
var sec_num = parseInt[this, 10]; // don't forget the second param
var hours = Math.floor[sec_num / 3600];
var minutes = Math.floor[[sec_num - [hours * 3600]] / 60];
var seconds = sec_num - [hours * 3600] - [minutes * 60];
if [hours "1:06:40"
function seconds2time [seconds] {
var hours = Math.floor[seconds / 3600];
var minutes = Math.floor[[seconds - [hours * 3600]] / 60];
var seconds = seconds - [hours * 3600] - [minutes * 60];
var time = "";
if [hours != 0] {
time = hours+":";
}
if [minutes != 0 || time !== ""] {
minutes = [minutes 9 ? s : '0' + s
].filter[Boolean].join[':'];
}
Hasil yang diharapkan:
const expect = require['expect'];
expect[formatTime[0]].toEqual['0:00'];
expect[formatTime[1]].toEqual['0:01'];
expect[formatTime[599]].toEqual['9:59'];
expect[formatTime[600]].toEqual['10:00'];
expect[formatTime[3600]].toEqual['1:00:00'];
expect[formatTime[360009]].toEqual['100:00:09'];
expect[formatTime[0.2]].toEqual['0:00'];
Saya suka jawaban pertama. Ada beberapa optimasi:
sumber data adalah suatu Angka. perhitungan tambahan tidak diperlukan.
banyak kelebihan komputasi
Kode hasil:
Number.prototype.toHHMMSS = function [] {
var seconds = Math.floor[this],
hours = Math.floor[seconds / 3600];
seconds -= hours*3600;
var minutes = Math.floor[seconds / 60];
seconds -= minutes*60;
if [hours 0?d+'d ':'']+[h>0?h+':':'']+[m>0?m+':':'']+[t>60?s:s+'s'];
}
mengembalikan "3d 16:32:12" atau "16:32:12" atau "32:12" atau "12s"
Saya menyukai jawaban Powtac, tetapi saya ingin menggunakannya di angular.js, jadi saya membuat filter menggunakan kodenya.
.filter['HHMMSS', ['$filter', function [$filter] {
return function [input, decimals] {
var sec_num = parseInt[input, 10],
decimal = parseFloat[input] - sec_num,
hours = Math.floor[sec_num / 3600],
minutes = Math.floor[[sec_num - [hours * 3600]] / 60],
seconds = sec_num - [hours * 3600] - [minutes * 60];
if [hours