web-dev-qa-db-fra.com

Comment puis-je prendre un total de minutes?

Mon système affiche l’heure comme celle-ci 10:42 lorsque j’ai entré la commande date +%R. J'ai besoin de prendre en minutes totales du temps. Cela signifie comme ceci 642 minutes. Existe-t-il une commande ou un script Shell permettant d’afficher la durée totale en minutes?

8
Dinesh Dhananjayan

Pour obtenir uniquement le nombre total de minutes de la journée, j'utiliserais la commande suivante:

$ date "+%H*60+%M" | bc

Exemple:

$ date +%R
09:30
$ date "+%H*60+%M" | bc
570

L'astuce consiste à formater la sortie date pour permettre à bc d'interpréter et de calculer la formule.

11
Sylvain Pineau

juste bash:

IFS=: read hour min < <(date +%R)
echo $(( 60 * 10#$hour + 10#$min ))

Forcer les deux variables à être traitées en base 10, afin d'éviter que le shell ne génère des erreurs pour les nombres octaux invalides 08 et 09

5
glenn jackman
date +%R | awk -F ":" '{print ($1 * 60) + $2}'

Ou

 echo $((($(date +%l) * 60 ) + $(date +%M)))

date +%l obtiendra les heures, multipliera par 60 et ajoutera des minutes date +%M

3
7171u

Utiliser date et bash:

eval "$(date +'today=%F now=%s')"; midnight=$(date -d "$today 0" +%s);echo "$(((now - midnight) / 60))"

Exemple

$ 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

En utilisant date et un z-Shell (zsh):

IFS=:; set -- $(date +%T); echo "$((($1 * 3600 + $2 * 60 + $3) / 60))"

Exemple

% date
Fr 10. Jul 08:40:53 CEST 2015

% IFS=:; set -- $(date +%T); echo "$((($1 * 3600 + $2 * 60 + $3) / 60))"
520
2
A.B.

Vous n'avez pas besoin d'utiliser IFS, vous pouvez le faire de cette façon:

date=$(date +'%l:%M')
read H M <<< ${date//[-: ]/ }
echo  "Total minutes: $(($H * 60 + $M))"

la sortie est:

Total minutes: 593
1
Maythux