Jika durasi Anda akan selalu kurang dari sehari, Anda dapat menggunakan +%Tformat untuk Jam: Menit: Detik untuk date +%T "1970-01-01 + ${seconds} seconds"mendapatkan ini21:33:09
Yzmir Ramirez
7
Kredit jatuh ke Stéphane Gimenez tetapi jika seseorang ingin menampilkan detik hanya jika suatu periode kurang dari satu menit di sini adalah versi modifikasi saya yang saya gunakan (juga dengan pluralisasi tetap):
Dalam contoh di atas, saya menampilkan output dari perintah lain yang dijalankan di dalam $( ... )sub-perintah. Sub-perintah itu melakukan ini, menghitung jumlah hari (detik / 86400), kemudian menggunakan dateperintah di sub-perintah lain $(date -d ... ), untuk menghasilkan jam, menit, dan detik untuk jumlah detik tertentu.
Saya membangun jawaban atti yang saya sukai sebagai ide.
Anda dapat melakukan ini dengan bash builtin printfyang akan mengambil detik sejak zaman sebagai argumen. Tidak perlu garpu untuk berlari date.
Anda harus mengatur zona waktu ke UTC untuk printfkarena format waktu di zona waktu lokal Anda dan Anda akan mendapatkan jawaban yang salah jika Anda tidak berada dalam waktu UTC.
date --date '@1005454800'memberi Anda Sun Nov 11 00:00:00 EST 2001, yaitu 1005454800 detik setelah zaman Unix. Anda dapat memformatnya dengan opsi tanggal + FORMAT.
Jawaban:
Anda dapat menggunakan sesuatu seperti ini:
Contoh:
sumber
Cara termudah dan terbersih adalah liner satu ini (dengan asumsi GNU
date
):Jika jumlah detiknya, katakan:
-> output:
1428 days 21 hours 33 minutes 09 seconds
sumber
+%T
format untuk Jam: Menit: Detik untukdate +%T "1970-01-01 + ${seconds} seconds"
mendapatkan ini21:33:09
Kredit jatuh ke Stéphane Gimenez tetapi jika seseorang ingin menampilkan detik hanya jika suatu periode kurang dari satu menit di sini adalah versi modifikasi saya yang saya gunakan (juga dengan pluralisasi tetap):
Contoh alternatif dalam POSIX:
sumber
convert $s
untuk mendapatkan hasil yang cantik.Saya akan melakukannya seperti ini:
Inilah satu liner di atas, yang dipecah sehingga lebih mudah dipahami:
Dalam contoh di atas, saya menampilkan output dari perintah lain yang dijalankan di dalam
$( ... )
sub-perintah. Sub-perintah itu melakukan ini, menghitung jumlah hari (detik / 86400), kemudian menggunakandate
perintah di sub-perintah lain$(date -d ... )
, untuk menghasilkan jam, menit, dan detik untuk jumlah detik tertentu.sumber
Saya mengubah fungsi tampilan di atas ... sebagai berikut:
karena saya selalu ingin melihat HH: MM: SS, bahkan jika mereka nol.
sumber
Saya membangun jawaban atti yang saya sukai sebagai ide.
Anda dapat melakukan ini dengan bash builtin
printf
yang akan mengambil detik sejak zaman sebagai argumen. Tidak perlu garpu untuk berlaridate
.Anda harus mengatur zona waktu ke UTC untuk
printf
karena format waktu di zona waktu lokal Anda dan Anda akan mendapatkan jawaban yang salah jika Anda tidak berada dalam waktu UTC.Di waktu lokal saya (yang saat ini NZDT - +1300) jawabannya salah jika saya tidak mengatur zona waktu
Dengan dan tanpa mengatur zona waktu
sumber
printf
memperkenalkan%(datefmt)T
notasi ini dimulai dengan bash-4.2-alpha.Di sini satu
Keluaran:
sumber
date --date '@1005454800'
memberi AndaSun Nov 11 00:00:00 EST 2001
, yaitu 1005454800 detik setelah zaman Unix. Anda dapat memformatnya dengan opsi tanggal + FORMAT.sumber