Wie kann ich aus der Zeit die Gesamtminuten in Anspruch nehmen?

8

Mein System hat die Uhrzeit wie folgt angezeigt 10:42, wenn ich den Befehl eingebe date +%R . Ich muss insgesamt Minuten der Zeit nehmen. Das bedeutet auf diese Weise 642 Minuten. Gibt es einen Befehl oder ein Shell-Skript zum Anzeigen der Gesamtzeit in Minuten?

    
Dinesh Dhananjayan 10.07.2015, 08:33

5 Antworten

11

Um nur die Gesamtminuten des Tages zu erhalten, würde ich den folgenden Befehl verwenden:

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

Beispiel:

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

Der Trick besteht darin, die Ausgabe von date so zu formatieren, dass bc die Formel interpretieren und berechnen kann.

    
Sylvain Pineau 10.07.2015, 09:31
5

nur bash:

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

Erzwingen, dass beide Variablen als Basis-10 behandelt werden, um zu vermeiden, dass die Shell Fehler für ungültige Oktalzahlen 08 und 09

ausgibt     
glenn jackman 10.07.2015 12:18
3
date +%R | awk -F ":" '{print ( * 60) + }'

Oder

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

date +%l wird die Stunden erhalten, mit 60 multiplizieren und Minuten date +%M hinzufügen

    
7171u 10.07.2015 08:42
2

Verwenden von date und bash :

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

Beispiel

$ 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

Verwenden von date und einer Z-Shell (zsh):

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

Beispiel

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

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

Sie müssen IFS nicht verwenden, Sie können dies folgendermaßen tun:

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

Ausgabe ist:

Total minutes: 593
    
Maythux 10.07.2015 08:56

Tags und Links