Bagaimana saya bisa mengkonversi detik ke HH-MM-SS
string menggunakan JavaScript?
javascript
date
time
date-format
time-format
Hannoun Yassir
sumber
sumber
Jawaban:
Apakah kamu tidak tahu datejs ? itu harus tahu.
Menggunakan datejs, tulis saja sesuatu seperti:
--memperbarui
Saat ini date.js sudah usang dan tidak dipelihara, jadi gunakan " Moment.js ", yang jauh lebih baik seperti yang ditunjukkan oleh TJ Crowder.
--perbarui 2
Silakan gunakan @ Frank solusi satu baris:
Sejauh ini solusi terbaik.
sumber
TypeError: Object [object Date] has no method 'clearTime'
.Anda dapat melakukannya tanpa perpustakaan JavaScript eksternal dengan bantuan metode Tanggal JavaScript seperti berikut:
Atau, sesuai komentar @Frank ; satu liner:
sumber
new Date(SECONDS * 1000).toISOString().substr(11, 8);
Object doesn't support property or method 'toISOString'
Saya tidak berpikir fitur bawaan dari objek Date standar akan melakukan ini untuk Anda dengan cara yang lebih nyaman daripada hanya melakukan perhitungan sendiri.
Contoh:
Tampilkan cuplikan kode
sumber
0.05
dalamhours
variabel. Saya memasukkannya ke dalamparseInt
yang diperbaiki untuk kasus saya, tapi saya pikir itu tidak akurat untuk semuanya. Namun, ini membantu saya, jadi terima kasih!parseInt
untuk itu, itu untuk string parsing , bukan memanipulasi angka.Math.floor
akan menjadi operasi yang relevan di sini.seconds = Math.floor(totalSeconds % 60);
. Saya baru saja mendapat hasil desimal di sana.totalSeconds % 60
hanya dapat memiliki bagian fraksional jikatotalSeconds
memiliki bagian fraksional. Apakah Anda ingin lantai itu akan tergantung pada apakah Anda ingin kehilangan informasi itu atau menyimpannya. (Operasi lantai lain yang kami lakukan tidak kehilangan informasi apa pun, karena mereka hanya membersihkan data yang akan berakhir padaminutes
danseconds
.)console.log( hours +':'+ ('0'+minutes).slice(-2) +':'+ ('0'+seconds).slice(-2) );
Saya tahu ini agak tua, tapi ...
ES2015:
Ini akan menampilkan:
sumber
Seperti yang ditunjukkan Cleiton dalam jawabannya , moment.js dapat digunakan untuk ini:
sumber
moment().startOf('year').seconds(30000000).format('DDD HH:mm:ss')
..format('YYYY DDD HH:mm:ss')
sumber
Ini caranya:
(Bersumber dari sini )
sumber
kita bisa membuat fungsi ini jauh lebih pendek dan tajam tetapi itu mengurangi keterbacaan, jadi kita akan menulisnya sesederhana mungkin dan se-stabil mungkin.
atau Anda dapat memeriksa ini berfungsi di sini :
sumber
Coba ini:
sumber
Ini adalah ekstensi ke kelas Number. toHHMMSS () mengonversi detik ke string jj: mm: dd.
sumber
Versi yang mudah diikuti untuk pemula:
sumber
Fungsi ini harus melakukannya:
Tanpa melewati pemisah, ia digunakan
:
sebagai pemisah (default):Jika Anda ingin menggunakan
-
sebagai pemisah, cukup berikan sebagai parameter kedua:Lihat juga Fiddle ini .
sumber
:
sebagai default untukseparator
parameter, seperti yang sudah saya jelaskan. Ini dilakukan oleh pernyataan itutypeof separator !== 'undefined' ? separator : ':'
. Juga, fungsi Anda cukup identik dengan saya menyimpan beberapa perubahan kosmetik dan keduanya harus menghasilkan output yang sama ... kecuali versi saya memiliki dukungan browser yang jauh lebih baik. Milik Anda tidak akan berfungsi di versi APA PUN dari Internet Explorer atau MS Edge <14.di bawah ini adalah kode yang diberikan yang akan mengkonversi detik ke format hh-mm-ss:
Dapatkan metode alternatif dari Konversi detik ke format HH-MM-SS dalam JavaScript
sumber
Untuk kasus khusus HH: MM: SS.MS ( mis : "00: 04: 33.637") seperti yang digunakan oleh FFMPEG untuk menentukan milidetik .
Contoh penggunaan, pengatur waktu pengangkut milidetik:
Contoh penggunaan, diikat ke elemen media
Di luar pertanyaan, fungsi-fungsi itu ditulis dalam php:
sumber
+ "." + p.getMilliseconds()
dengan hanya menggunakannew Date(p.getTime()-o.getTime()).toISOString().split("T")[1].split("Z")[0]
sumber
Saya hanya ingin memberikan sedikit penjelasan untuk jawaban yang bagus di atas:
Pada baris kedua, karena ada 3600 detik dalam 1 jam, kami membagi jumlah total detik dengan 3600 untuk mendapatkan jumlah total jam. Kami menggunakan parseInt untuk menghapus desimal apa pun. Jika totalSec adalah 12600 (3 setengah jam), maka parseInt (totalSec / 3600) akan mengembalikan 3, karena kita akan memiliki 3 jam penuh. Mengapa kita membutuhkan% 24 dalam kasus ini? Jika kita melebihi 24 jam, katakanlah kita memiliki 25 jam (90000 detik), maka modulo di sini akan membawa kita kembali ke 1 lagi, daripada mengembalikan 25. Itu membatasi hasil dalam batas 24 jam, karena ada 24 jam dalam satu hari.
Ketika Anda melihat sesuatu seperti ini:
Pikirkan seperti ini:
sumber
Menyambung masuk di utas lama ini - OP menyatakan HH: MM: SS, dan banyak solusi berfungsi, sampai Anda menyadari bahwa Anda membutuhkan lebih dari 24 jam terdaftar. Dan mungkin Anda tidak ingin lebih dari satu baris kode. Ini dia:
Ia mengembalikan H +: MM: SS. Untuk menggunakannya, cukup gunakan:
... Saya mencoba membuatnya menggunakan jumlah kode seminimal mungkin, untuk pendekatan one-liner yang bagus.
sumber
Sudahkah Anda mencoba menambahkan detik ke objek Date?
Contoh: https://jsfiddle.net/j5g2p0dc/5/
Diperbarui: Tautan sampel tidak ada sehingga saya membuat yang baru.
sumber
addSeconds
pada objek Date likeDate.prototype.addSeconds = function(seconds){...}
. Ya, itu berfungsi, terima kasih untuk pembaruannya.Berikut adalah fungsi untuk mengkonversi detik ke format hh-mm-ss berdasarkan jawaban powtac di sini
jsfiddle
Contoh penggunaan
sumber
Setelah melihat semua jawaban dan tidak senang dengan sebagian besar dari mereka, inilah yang saya temukan. Saya tahu saya sangat terlambat untuk percakapan, tapi ini dia.
Saya membuat objek Date baru, mengubah waktu ke parameter saya, mengubah Obyek Date menjadi string waktu, dan menghapus hal-hal tambahan dengan memisahkan string dan mengembalikan hanya bagian yang perlu.
Saya pikir saya akan berbagi pendekatan ini, karena menghilangkan kebutuhan untuk regex, logika dan matematika akrobatik untuk mendapatkan hasil dalam format "HH: mm: ss", dan sebaliknya itu bergantung pada metode built in.
Anda mungkin ingin melihat dokumentasi di sini: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
sumber
Ada banyak opsi untuk menyelesaikan masalah ini, dan jelas ada opsi bagus yang disarankan, Tapi saya ingin menambahkan satu lagi kode yang dioptimalkan di sini
jika Anda tidak ingin diformat nol dengan kurang dari 10 angka, Anda dapat menggunakan
}
Contoh Kode http://fiddly.org/1c476/1
sumber
Dalam satu baris, menggunakan solusi TJ Crowder:
Dalam satu baris, solusi lain yang juga menghitung hari:
Sumber: https://gist.github.com/martinbean/2bf88c446be8048814cf02b2641ba276
sumber
sumber
Anda juga dapat menggunakan kode di bawah ini:
sumber
new Date().toString().split(" ")[4];
hasil
15:08:03
sumber
Bagi siapa pun yang menggunakan AngularJS, solusi sederhana adalah menyaring nilai dengan API tanggal , yang mengubah milidetik ke string berdasarkan format yang diminta. Contoh:
Perhatikan bahwa ini mengharapkan milidetik, jadi Anda mungkin ingin melipatgandakan TimeRemain dengan 1000 jika Anda mengonversi dari detik (seperti pertanyaan asli dirumuskan).
sumber
Saya menemukan beberapa kasus yang menyebutkan jumlah detik lebih dari satu hari. Berikut versi adaptasi dari jawaban teratas @Harish Anchu yang menyumbang periode waktu yang lebih lama:
Contoh:
sumber
Contoh Penggunaan
sumber
Tidak ada jawaban di sini yang memenuhi persyaratan saya karena saya ingin dapat mengatasinya
Meskipun itu tidak diperlukan oleh OP, praktik yang baik untuk menutupi kasus-kasus tepi, terutama ketika itu membutuhkan sedikit usaha.
Sangat jelas bahwa OP berarti NOMOR detik ketika dia mengatakan detik . Mengapa fungsi Anda dipatok
String
?sumber
secondsToTimeSpan(8991)
kembali6.00:05:51
sedangkan saya pikir itu harus kembali00:02:29:51
Saya telah menggunakan kode ini sebelumnya untuk membuat objek rentang waktu sederhana:
sumber