H mewakili jumlah jam dalam satu hari. Jadi, jika Anda memiliki 90000 detik dan Anda akan menggunakan H hasilnya adalah 01 (jam pertama hari berikutnya). BUKAN 25 - hanya ada 24 jam dalam sehari.
MarcinWolny
7
Saya tidak yakin ini adalah jawaban yang tepat, ini akan menghasilkan datetime... jadi jika kita mengharapkan hasil> 24 jam itu tidak akan berfungsi. Juga jika kita memerlukan beberapa hasil negatif (misalnya bekerja dengan offset) itu tidak akan berfungsi. -1untuk rincian detail
WonderLand
54
Ini seharusnya bukan jawaban yang diterima karena cacat yang jelas untuk waktu yang lebih besar dari 24 jam.
Scott Flack
10
Untuk digunakan dengan hari-hari di mana angkanya mungkin lebih besar dari 85399 Anda dapat menggunakan echo gmdate("z H:i:s", 685);z adalah jumlah hari dalam tahun dimulai dengan 0. Anda jelas dapat meninjau manual tanggal php untuk memenuhi kebutuhan spesifik Anda.
Nightwolf
177
Satu jam adalah 3600sec, satu menit adalah 60sec jadi mengapa tidak:
Jawaban yang bagus, tetapi pastikan Anda mengurangi $ jam * 3600 dan $ menit * 60 dari $ init di antara setiap operasi jika tidak, Anda akan berakhir dengan penghitungan ganda menit dan detik.
Mike Stowe
5
Untuk menambah komentar @ Amber, gunakan sprintfuntuk mengembalikan nilai alih-alih mencetaknya.
Allen Butler
77
ini dia
function format_time($t,$f=':')// t = seconds, f = separator {return sprintf("%02d%s%02d%s%02d", floor($t/3600), $f,($t/60)%60, $f, $t%60);}
echo format_time(685);// 00:11:25
Tidak berfungsi untuk nilai negatif. Jika Anda memiliki interval detik negatif, gunakan ini:return ($t< 0 ? '-' : '') . sprintf("%02d%s%02d%s%02d", floor(abs($t)/3600), $f, (abs($t)/60)%60, $f, abs($t)%60); }
Ajax
66
Gunakan fungsi gmdate()hanya jika detik kurang dari 86400(1 hari) :
Solusi lain digunakan gmdate, tetapi gagal dalam kasus tepi di mana Anda memiliki lebih dari 86400 detik. Untuk menyiasatinya, kita cukup menghitung sendiri jumlah jam, lalu gmdatemenghitung detik yang tersisa menjadi menit / detik.
$ hms = gmdate ("H: i: s", 12720); itu tidak cukup untuk mendapatkan Day-Hour-Min-Sec
mughal
7
gmdate("H:i:s", no_of_seconds);
Tidak akan memberikan waktu dalam H:i:sformat jika no_of_secondslebih dari 1 hari (detik dalam sehari).
Ini akan mengabaikan nilai hari dan hanya memberiHour:Min:Seconds
Sebagai contoh:
gmdate("H:i:s",89922);// returns 0:58:42 not (1 Day 0:58:42) or 24:58:42
@ barfoon - benar, tapi saya percaya inilah yang diminta M.Ezz, dan ini adalah standar yang digunakan dalam waktu. Ini terlihat aneh dari pengalaman saya "3: 7: 5" bukannya "03:07:05", atau bahkan "3: 7", lebih mirip rasio bagi saya.
Kerry Jones
3
Fungsi gmtdate () tidak berfungsi untuk saya karena saya melacak jam kerja di proyek dan jika lebih dari 24 jam, Anda mendapatkan jumlah yang tersisa setelah 24 jam dikurangi. Dengan kata lain 37 jam menjadi 13 jam. (semua seperti yang dinyatakan di atas oleh Glavic - terima kasih atas contoh Anda!) Yang ini bekerja dengan baik:
Kode ini menghindari sebanyak mungkin pemanggilan fungsi yang membosankan dan pembangunan string sepotong demi sepotong, dan fungsi besar dan besar yang dibuat orang untuk ini.
Ini menghasilkan format "1h05m00s" dan menggunakan nol terkemuka untuk menit dan detik, selama komponen waktu non-nol mendahului mereka.
Dan itu melompati semua komponen utama yang kosong untuk menghindari memberi Anda informasi yang tidak berguna seperti "0h00m01s" (sebagai gantinya itu akan muncul sebagai "1s").
Jika Anda ingin membuat kode lebih pendek (tetapi kurang dapat dibaca), Anda dapat menghindari $convertedarray dan meletakkan nilai-nilai secara langsung dalam panggilan sprintf (), sebagai berikut:
Durasi harus 0 atau lebih tinggi di kedua potongan kode di atas. Durasi negatif tidak didukung. Tetapi Anda dapat menangani durasi negatif dengan menggunakan kode alternatif berikut sebagai gantinya:
Perhatikan bahwa gmdate()peretasan bahkan lebih pendek dari ini, tetapi hanya mendukung durasi hingga 24 jam. Apa pun di atas 24 jam akan gagal jika Anda menggunakan trik gmdate!
gw0
1
Cara sederhana untuk menggunakan DateTime untuk ini adalah:
Yah saya membutuhkan sesuatu yang akan mengurangi detik menjadi beberapa jam menit dan detik, tetapi akan melebihi 24 jam, dan tidak mengurangi turun menjadi beberapa hari.
Berikut adalah fungsi sederhana yang berfungsi. Anda mungkin dapat memperbaikinya ... Tapi ini dia:
$given =685;/*
* In case $given == 86400, gmdate( "H" ) will convert it into '00' i.e. midnight.
* We would need to take this into consideration, and so we will first
* check the ratio of the seconds i.e. $given:$number_of_sec_in_a_day
* and then after multiplying it by the number of hours in a day (24), we
* will just use "floor" to get the number of hours as the rest would
* be the minutes and seconds anyways.
*
* We can also have minutes and seconds combined in one variable,
* e.g. $min_sec = gmdate( "i:s", $given );
* But for versatility sake, I have taken them separately.
*/
$hours =( $given >86399)?'0'.floor(( $given /86400)*24)-gmdate("H", $given ): gmdate("H", $given );
$min = gmdate("i", $given );
$sec = gmdate("s", $given );
echo $formatted_string = $hours.':'.$min.':'.$sec;
Jika Anda perlu melakukannya dalam javascript, Anda dapat melakukannya hanya dalam satu baris kode seperti yang dijawab di sini. Konversi detik menjadi HH-MM-SS dengan JavaScript . Ganti DETIK dengan apa yang ingin Anda konversi.
var time =newDate(SECONDS *1000).toISOString().substr(11,8);
Kalau-kalau ada orang lain yang mencari fungsi sederhana untuk mengembalikan ini diformat dengan baik (saya tahu itu bukan format OP meminta), ini adalah apa yang baru saja saya buat. Berkat @mughal untuk kode ini didasarkan pada.
seconds
kedate/time
atau ke sejumlah Jam: Menit: Detik?Jawaban:
Anda dapat menggunakan
gmdate()
fungsi ini:sumber
datetime
... jadi jika kita mengharapkan hasil> 24 jam itu tidak akan berfungsi. Juga jika kita memerlukan beberapa hasil negatif (misalnya bekerja dengan offset) itu tidak akan berfungsi.-1
untuk rincian detailecho gmdate("z H:i:s", 685);
z adalah jumlah hari dalam tahun dimulai dengan 0. Anda jelas dapat meninjau manual tanggal php untuk memenuhi kebutuhan spesifik Anda.Satu jam adalah 3600sec, satu menit adalah 60sec jadi mengapa tidak:
yang menghasilkan:
(Saya belum menguji sebanyak ini, jadi mungkin ada kesalahan dengan lantai atau lebih)
sumber
printf("%02d:%02d:%02d", $hours, $minutes, $seconds);
sprintf
untuk mengembalikan nilai alih-alih mencetaknya.ini dia
sumber
return ($t< 0 ? '-' : '') . sprintf("%02d%s%02d%s%02d", floor(abs($t)/3600), $f, (abs($t)/60)%60, $f, abs($t)%60); }
Gunakan fungsi
gmdate()
hanya jika detik kurang dari86400
(1 hari) :Lihat: gmdate ()
Jalankan Demo
Konversi detik ke format dengan 'kaki' tanpa batas * :
Lihat: floor () , sprintf () , operator aritmatika
Jalankan Demo
Contoh penggunaan
DateTime
ekstensi:Lihat: DateTime :: __ construct () , DateTime :: memodifikasi () , clone , sprintf ()
Jalankan Demo
Rentang
-838:59:59
838:59:59
contoh MySQL dari hasil dibatasi dengan tipe data TIME, yaitu dari hingga :Lihat: SEC_TO_TIME
Jalankan Demo
Contoh PostgreSQL:
Jalankan Demo
sumber
Solusi lain digunakan
gmdate
, tetapi gagal dalam kasus tepi di mana Anda memiliki lebih dari 86400 detik. Untuk menyiasatinya, kita cukup menghitung sendiri jumlah jam, lalugmdate
menghitung detik yang tersisa menjadi menit / detik.Input:
6030
Keluaran:1:40:30
Input:
2000006030
Keluaran:555557:13:50
sumber
sumber
Tidak akan memberikan waktu dalam
H:i:s
format jikano_of_seconds
lebih dari 1 hari (detik dalam sehari).Ini akan mengabaikan nilai hari dan hanya memberi
Hour:Min:Seconds
Sebagai contoh:
sumber
Berikut ini adalah satu liner yang menangani detik negatif dan bernilai lebih dari 1 hari.
Sebagai contoh:
keluaran: -26: 03: 04
sumber
Jika Anda tidak menyukai jawaban yang diterima atau yang populer, cobalah yang ini
sumber
tulis fungsi seperti ini untuk mengembalikan array
maka cukup panggil fungsi seperti ini:
output adalah
sumber
Lihat:
Dari: Konversi detik menjadi hari, jam, menit, dan detik
sumber
Coba ini:
Diambil dari
http://bytes.com/topic/php/answers/3917-seconds-converted-hh-mm-ss
sumber
Fungsi gmtdate () tidak berfungsi untuk saya karena saya melacak jam kerja di proyek dan jika lebih dari 24 jam, Anda mendapatkan jumlah yang tersisa setelah 24 jam dikurangi. Dengan kata lain 37 jam menjadi 13 jam. (semua seperti yang dinyatakan di atas oleh Glavic - terima kasih atas contoh Anda!) Yang ini bekerja dengan baik:
sumber
Fungsi ini bermanfaat, Anda dapat memperluasnya:
sumber
Solusi dari: https://gist.github.com/SteveJobzniak/c91a8e2426bac5cb9b0cbc1bdbc45e4b
Ini metode yang sangat bersih dan singkat!
Kode ini menghindari sebanyak mungkin pemanggilan fungsi yang membosankan dan pembangunan string sepotong demi sepotong, dan fungsi besar dan besar yang dibuat orang untuk ini.
Ini menghasilkan format "1h05m00s" dan menggunakan nol terkemuka untuk menit dan detik, selama komponen waktu non-nol mendahului mereka.
Dan itu melompati semua komponen utama yang kosong untuk menghindari memberi Anda informasi yang tidak berguna seperti "0h00m01s" (sebagai gantinya itu akan muncul sebagai "1s").
Contoh hasil: "1s", "1m00s", "19m08s", "1h00m00s", "4h08m39s".
Jika Anda ingin membuat kode lebih pendek (tetapi kurang dapat dibaca), Anda dapat menghindari
$converted
array dan meletakkan nilai-nilai secara langsung dalam panggilan sprintf (), sebagai berikut:Durasi harus 0 atau lebih tinggi di kedua potongan kode di atas. Durasi negatif tidak didukung. Tetapi Anda dapat menangani durasi negatif dengan menggunakan kode alternatif berikut sebagai gantinya:
sumber
gmdate()
peretasan bahkan lebih pendek dari ini, tetapi hanya mendukung durasi hingga 24 jam. Apa pun di atas 24 jam akan gagal jika Anda menggunakan trik gmdate!Cara sederhana untuk menggunakan DateTime untuk ini adalah:
Ini adalah solusi sederhana yang memberi Anda kemampuan untuk menggunakan format Metode DateTime.
sumber
Di java Anda bisa menggunakan cara ini.
sumber
sumber
Yah saya membutuhkan sesuatu yang akan mengurangi detik menjadi beberapa jam menit dan detik, tetapi akan melebihi 24 jam, dan tidak mengurangi turun menjadi beberapa hari.
Berikut adalah fungsi sederhana yang berfungsi. Anda mungkin dapat memperbaikinya ... Tapi ini dia:
sumber
Untuk mengubahnya menjadi fungsi:
sumber
Jika Anda perlu melakukannya dalam javascript, Anda dapat melakukannya hanya dalam satu baris kode seperti yang dijawab di sini. Konversi detik menjadi HH-MM-SS dengan JavaScript . Ganti DETIK dengan apa yang ingin Anda konversi.
sumber
Jika Anda ingin membuat string durasi audio / video seperti YouTube, dll. Anda dapat melakukannya:
($seconds >= 60) ? ltrim(gmdate("H:i:s", $seconds), ":0") : gmdate("0:s", $seconds)
Akan mengembalikan string seperti:
Mungkin tidak akan bekerja dengan baik untuk waktu> = 24 jam.
sumber
Ini cara yang bagus untuk melakukan itu:
sumber
Kalau-kalau ada orang lain yang mencari fungsi sederhana untuk mengembalikan ini diformat dengan baik (saya tahu itu bukan format OP meminta), ini adalah apa yang baru saja saya buat. Berkat @mughal untuk kode ini didasarkan pada.
sumber
Siapa pun yang mencari ini di masa depan, ini memberikan format yang diminta oleh poster awal.
sumber
sumber