Linux - Zeit-Differenz berechnen zwischen 2 Zeilen
Hallo zusammen,
kurze Einleitung:
Ich habe die App Geofancy aufs Telefon getan. (Nicht zu verwechseln mit Geofency) Geofancy macht lokationsbasierte http-Aufrufe. Man kann also einen Bereich definieren, sodass beim ERREICHEN und VERLASSEN dieses Bereiches die App einen http-Aufruf macht.
Ich habe auf meinem Raspberry 2 php Dateien, die entsprechend aufgerufen werden. Jede php-Datei ruft ein Skript auf, das jeweils die aktuelle Zeit in eine Logdatei schreibt.
Die Logdatei sieht nun so aus:
Ankunft,2015-04-26,08:30
Abfahrt,2015-04-26,17:31
Ankunft,2015-04-27,08:31
Abfahrt,2015-04-27,16:31
(...)
Meine Frage:
Wie kann man berechnen, dass in die Leerzeile jeweils die Differenz geschrieben wird?
Müsste dann also ca. so aussehen:
Ankunft,2015-04-26,08:30
Abfahrt,2015-04-26,17:30
Differenz, 0, 9:00
Ankunft,2015-04-27,08:30
Abfahrt,2015-04-27,16:30
Differenz, 0, 8:00
Vielen Dank für eure Tipps.
Grüße,
Peter
kurze Einleitung:
Ich habe die App Geofancy aufs Telefon getan. (Nicht zu verwechseln mit Geofency) Geofancy macht lokationsbasierte http-Aufrufe. Man kann also einen Bereich definieren, sodass beim ERREICHEN und VERLASSEN dieses Bereiches die App einen http-Aufruf macht.
Ich habe auf meinem Raspberry 2 php Dateien, die entsprechend aufgerufen werden. Jede php-Datei ruft ein Skript auf, das jeweils die aktuelle Zeit in eine Logdatei schreibt.
Die Logdatei sieht nun so aus:
Ankunft,2015-04-26,08:30
Abfahrt,2015-04-26,17:31
Ankunft,2015-04-27,08:31
Abfahrt,2015-04-27,16:31
(...)
Meine Frage:
Wie kann man berechnen, dass in die Leerzeile jeweils die Differenz geschrieben wird?
Müsste dann also ca. so aussehen:
Ankunft,2015-04-26,08:30
Abfahrt,2015-04-26,17:30
Differenz, 0, 9:00
Ankunft,2015-04-27,08:30
Abfahrt,2015-04-27,16:30
Differenz, 0, 8:00
Vielen Dank für eure Tipps.
Grüße,
Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 270459
Url: https://administrator.de/contentid/270459
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
3 Kommentare
Neuester Kommentar
Moin
Nun die Logdatei Auslesen, Unix-Timestamp machen wenn es nicht schon einer ist, A von B Abziehen und wider in eine Zeit umrechnen.
Besser währe aber wenn es in eine Datenbank geschrieben würde.
Alleine wenn nacher zig Tausende EInträge sind kannst du es mit der DB schneller Auswerten und FIltern welche Daten zu brauchst.
Zudem kannst du eine Seite als Dynamische Ausgabe dann auch machen für Tag X auswählbar ect
Wenns unbedingt ne Datei sein muss Beachte das du die Datei Locken solltes wenn du die Zeitberechnung machst sowie das ggfs neue Daten nicht erfasst werden können in der Zeit sowie welche Fehler/Neuversuch dein Script dann macht...
Nun die Logdatei Auslesen, Unix-Timestamp machen wenn es nicht schon einer ist, A von B Abziehen und wider in eine Zeit umrechnen.
Besser währe aber wenn es in eine Datenbank geschrieben würde.
Alleine wenn nacher zig Tausende EInträge sind kannst du es mit der DB schneller Auswerten und FIltern welche Daten zu brauchst.
Zudem kannst du eine Seite als Dynamische Ausgabe dann auch machen für Tag X auswählbar ect
Wenns unbedingt ne Datei sein muss Beachte das du die Datei Locken solltes wenn du die Zeitberechnung machst sowie das ggfs neue Daten nicht erfasst werden können in der Zeit sowie welche Fehler/Neuversuch dein Script dann macht...
Zitat von @peterha:
Ich habe auf meinem Raspberry 2 php Dateien, die entsprechend aufgerufen werden. Jede php-Datei ruft ein Skript auf, das jeweils
die aktuelle Zeit in eine Logdatei schreibt.
Ich habe auf meinem Raspberry 2 php Dateien, die entsprechend aufgerufen werden. Jede php-Datei ruft ein Skript auf, das jeweils
die aktuelle Zeit in eine Logdatei schreibt.
Schreibe die php-dateien so um, daß Du einfache unix-timestamps benutzt. Dann ist dei zeitdifferenz eine einfache Subtraktion.
lks
Hallo Peter,
ich würde das auch über eine Datenbank abfackeln, hat wie schon geschrieben wurde, mehrere Vorteile... oder aber gleich das ganze in PHP berechnen und in die Logfiles schreiben.
Aber trotzdem noch zur Lösung deines Vorhabens, welches sich z.B. mit awk in der Bash machen lässt:
Grüße Uwe
ich würde das auch über eine Datenbank abfackeln, hat wie schon geschrieben wurde, mehrere Vorteile... oder aber gleich das ganze in PHP berechnen und in die Logfiles schreiben.
Aber trotzdem noch zur Lösung deines Vorhabens, welches sich z.B. mit awk in der Bash machen lässt:
#!/bin/bash
awk -F '[,:-]' 'BEGIN{pos=1}{if($0 == ""){seconds=mktime(endtime)-mktime(starttime);days=int(seconds/86400);hours=(seconds % 86400)/3600;minutes=int((hours % 1)*60);printf("Differenz %d, %.2d:%.2d\n",days,hours,minutes)}else{print $0;if(pos == 1){starttime=$2" "$3" "$4" "$5" "$6" 00"; pos=2}else{endtime=$2" "$3" "$4" "$5" "$6" 00";pos=1}}}' ./logdatei.txt >./logdatei_differenz.txt