Saya memiliki persyaratan yang sama seperti ini: Ubah waktu dalam format HH: MM: SS menjadi detik saja?
tetapi dalam javascript. Saya telah melihat banyak contoh untuk mengubah detik ke format yang berbeda tetapi tidak HH: MM: SS menjadi detik. Bantuan apa pun akan dihargai.
javascript
time
Sri Reddy
sumber
sumber
DD
diHH:MM:DD
?Jawaban:
Coba ini:
var hms = '02:04:33'; // your input string var a = hms.split(':'); // split it at the colons // minutes are worth 60 seconds. Hours are worth 60 minutes. var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); console.log(seconds);
sumber
String.prototype.toSeconds = function () { if (!this) return null; var hms = this.split(':'); return (+hms[0]) * 60 * 60 + (+hms[1]) * 60 + (+hms[2] || 0); }
CATATAN:|| 0
di bagian akhir bagus untuk implementasi apa pun dari kode ini - ini mencegah masalah dengan representasi waktu (masih valid) dari HH: MM (input Chrome type = "time" akan dikeluarkan dalam format ini saat detik = 0).hh:mm
tidak hanyaseconds
dalam hal ini apa yang harus saya modifikasi ..?var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]);
kevar seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60;
Fungsi ini menangani "HH: MM: SS" serta "MM: SS" atau "SS".
function hmsToSecondsOnly(str) { var p = str.split(':'), s = 0, m = 1; while (p.length > 0) { s += m * parseInt(p.pop(), 10); m *= 60; } return s; }
sumber
Ini dapat dilakukan dengan cukup tangguh dengan yang berikut:
'01:02:03'.split(':').reduce((acc,time) => (60 * acc) + +time);
Ini karena setiap satuan waktu dalam jam, menit, dan detik adalah kelipatan 60 lebih besar daripada satuan yang lebih kecil. Waktu dibagi menjadi komponen jam menit dan detik, kemudian dikurangi menjadi detik dengan menggunakan nilai akumulasi dari unit yang lebih tinggi dikalikan dengan 60 saat melewati setiap unit.
Yang
+time
digunakan untuk melemparkan waktu untuk nomor.Itu pada dasarnya akhirnya melakukan:
(60 * ((60 * HHHH) + MM)) + SS
Jika hanya beberapa detik yang berlalu maka hasilnya akan menjadi string, jadi untuk memperbaikinya kita bisa mentransmisikan seluruh hasil ke int:
+('03'.split(':').reduce((acc,time) => (60 * acc) + +time));
sumber
HH:MM:SS
sertaMM:SS
, sementara jawaban yang diterima tidak.'03'.split(':').reduce((acc,time) => (60 * acc) + +time, 0);
Gagal karena mengembalikan string yang tidak diharapkan:'03'.split(':').reduce((acc,time) => (60 * acc) + +time);
Karena fungsi getTime dari objek Date mendapatkan milidetik sejak 1970/01/01, kita bisa melakukan ini:
var time = '12:23:00'; var seconds = new Date('1970-01-01T' + time + 'Z').getTime() / 1000;
sumber
Ubah
hh:mm:ss
string menjadi detik dalam satu baris. Juga diperbolehkanh:m:s
format danmm:ss
,m:s
dll'08:45:20'.split(':').reverse().reduce((prev, curr, i) => prev + curr*Math.pow(60, i), 0)
sumber
hh:mm:ss
string menjadi detik dalam satu baris. Juga diperbolehkanh:m:s
format danmm:ss
,m:s
dll.reverse()
: '00: 01: 11'.split (':'). Reduce ((val, entry, i) => val + entry * (3600 / Math.pow (60, i)), 0 ) === 71mm:ss
itu tidak akan bekerja dengan benar.mencoba
time="12:12:12"; tt=time.split(":"); sec=tt[0]*3600+tt[1]*60+tt[2]*1;
sumber
Metode statis Javascript berhasil
Date.UTC()
:alert(getSeconds('00:22:17')); function getSeconds(time) { var ts = time.split(':'); return Date.UTC(1970, 0, 1, ts[0], ts[1], ts[2]) / 1000; }
sumber
Ini mungkin bentuk yang sedikit lebih mudah dibaca dari jawaban asli yang disetujui.
const getSeconds = (hms: string) : number => { const [hours, minutes, seconds] = hms.split(':'); return (+hours) * 60 * 60 + (+minutes) * 60 + (+seconds); };
sumber
new Date(moment('23:04:33', "HH:mm")).getTime()
Output: 1499755980000 (dalam milidetik) (1499755980000/1000) (dalam detik)
Catatan: keluaran ini menghitung perbedaan dari 1970-01-01 12: 0: 0 hingga sekarang dan kita perlu mengimplementasikan moment.js
sumber
Fungsi ini berfungsi untuk MM: SS juga:
const convertTime = (hms) => { if (hms.length <3){ return hms } else if (hms.length <6){ const a = hms.split(':') return hms = (+a[0]) * 60 + (+a[1]) } else { const a = hms.split(':') return hms = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]) } }
sumber
Diambil dari solusi yang diberikan oleh Paul https://stackoverflow.com/a/45292588/1191101 tetapi menggunakan notasi fungsi lama sehingga bisa juga digunakan di mesin js lain (misal java Rhino)
function strToSeconds (stime) { return +(stime.split(':').reduce(function (acc,time) { return +(60 * acc) + +time })); }
atau hanya yang ini lebih mudah dibaca
function strToSeconds (stime) { var tt = stime.split(':').reverse (); return ((tt.length >= 3) ? (+tt[2]): 0)*60*60 + ((tt.length >= 2) ? (+tt[1]): 0)*60 + ((tt.length >= 1) ? (+tt[0]): 0); }
sumber
function parsehhmmsst(arg) { var result = 0, arr = arg.split(':') if (arr[0] < 12) { result = arr[0] * 3600 // hours } result += arr[1] * 60 // minutes result += parseInt(arr[2]) // seconds if (arg.indexOf('P') > -1) { // 8:00 PM > 8:00 AM result += 43200 } return result } $('body').append(parsehhmmsst('12:00:00 AM') + '<br>') $('body').append(parsehhmmsst('1:00:00 AM') + '<br>') $('body').append(parsehhmmsst('2:00:00 AM') + '<br>') $('body').append(parsehhmmsst('3:00:00 AM') + '<br>') $('body').append(parsehhmmsst('4:00:00 AM') + '<br>') $('body').append(parsehhmmsst('5:00:00 AM') + '<br>') $('body').append(parsehhmmsst('6:00:00 AM') + '<br>') $('body').append(parsehhmmsst('7:00:00 AM') + '<br>') $('body').append(parsehhmmsst('8:00:00 AM') + '<br>') $('body').append(parsehhmmsst('9:00:00 AM') + '<br>') $('body').append(parsehhmmsst('10:00:00 AM') + '<br>') $('body').append(parsehhmmsst('11:00:00 AM') + '<br>') $('body').append(parsehhmmsst('12:00:00 PM') + '<br>') $('body').append(parsehhmmsst('1:00:00 PM') + '<br>') $('body').append(parsehhmmsst('2:00:00 PM') + '<br>') $('body').append(parsehhmmsst('3:00:00 PM') + '<br>') $('body').append(parsehhmmsst('4:00:00 PM') + '<br>') $('body').append(parsehhmmsst('5:00:00 PM') + '<br>') $('body').append(parsehhmmsst('6:00:00 PM') + '<br>') $('body').append(parsehhmmsst('7:00:00 PM') + '<br>') $('body').append(parsehhmmsst('8:00:00 PM') + '<br>') $('body').append(parsehhmmsst('9:00:00 PM') + '<br>') $('body').append(parsehhmmsst('10:00:00 PM') + '<br>') $('body').append(parsehhmmsst('11:00:00 PM') + '<br>')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
sumber
Anda dapat melakukan ini secara dinamis - jika Anda tidak hanya menemukan: HH: mm: ss, tetapi juga, mm: ss, atau bahkan ss saja.
var str = '12:99:07'; var times = str.split(":"); times.reverse(); var x = times.length, y = 0, z; for (var i = 0; i < x; i++) { z = times[i] * Math.pow(60, i); y += z; } console.log(y);
sumber
Ini adalah solusi yang paling jelas dan mudah dimengerti:
function convertDurationtoSeconds(duration){ const [hours, minutes, seconds] = duration.split(':'); return Number(hours) * 60 * 60 + Number(minutes) * 60 + Number(seconds); }; const input = '01:30:45'; const output = convertDurationtoSeconds(input); console.log(`${input} is ${output} in seconds`);
sumber