Sistem saya menampilkan waktu seperti ini 10:42 ketika saya memasukkan perintah
date +%R
. Saya perlu mengambil total menit waktu. Itu artinya 642 menit. Apakah ada perintah atau skrip shell untuk menampilkan waktu total dalam hitungan menit?
Sistem saya menampilkan waktu seperti ini 10:42 ketika saya memasukkan perintah
date +%R
. Saya perlu mengambil total menit waktu. Itu artinya 642 menit. Apakah ada perintah atau skrip shell untuk menampilkan waktu total dalam hitungan menit?
Jawaban:
Untuk hanya mendapatkan total menit dalam sehari, saya akan menggunakan perintah berikut:
$ date "+%H*60+%M" | bc
Contoh:
$ date +%R
09:30
$ date "+%H*60+%M" | bc
570
Caranya adalah memformat date
output untuk memungkinkan bc
untuk menafsirkan dan menghitung formula.
zsh
date "+%H*60+%M" | bc
bekerja dengan baik juga. Mungkin di hampir semua shell.
hanya bash:
IFS=: read hour min < <(date +%R)
echo $(( 60 * 10#$hour + 10#$min ))
Memaksa kedua variabel untuk diperlakukan sebagai basis-10, untuk menghindari kesalahan melempar shell untuk angka oktal yang tidak valid 08
dan09
echo $(( $(date "+%k * 60 + 10#%M") ))
itulah yang ingin saya katakan
Menggunakan date
dan bash
:
eval "$(date +'today=%F now=%s')"; midnight=$(date -d "$today 0" +%s);echo "$(((now - midnight) / 60))"
Contoh
$ date
Fr 10. Jul 08:45:05 CEST 2015
$ eval "$(date +'today=%F now=%s')"; midnight=$(date -d "$today 0" +%s);echo "$(((now - midnight) / 60))"
525
Menggunakan date
dan z-shell (zsh):
IFS=:; set -- $(date +%T); echo "$((($1 * 3600 + $2 * 60 + $3) / 60))"
Contoh
% date
Fr 10. Jul 08:40:53 CEST 2015
% IFS=:; set -- $(date +%T); echo "$((($1 * 3600 + $2 * 60 + $3) / 60))"
520
IFS=: set -- $(date +%T); echo $1
pengembalian 08:16:52
- Anda akan perluIFS=:; set ...
Anda tidak perlu menggunakan IFS, Anda bisa melakukannya dengan cara ini:
date=$(date +'%l:%M')
read H M <<< ${date//[-: ]/ }
echo "Total minutes: $(($H * 60 + $M))"
output adalah:
Total minutes: 593
bash: 9 17*60+: syntax error in expression (error token is "17*60+")
echo $(date +"%H*60+%M") | bc
, ini juga berfungsi di zsh;)