peterha
Goto Top

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

Content-ID: 270459

Url: https://administrator.de/contentid/270459

Ausgedruckt am: 22.11.2024 um 06:11 Uhr

kaiand1
kaiand1 28.04.2015 um 09:18:52 Uhr
Goto Top
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...
Lochkartenstanzer
Lochkartenstanzer 28.04.2015 um 09:29:28 Uhr
Goto Top
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.

Schreibe die php-dateien so um, daß Du einfache unix-timestamps benutzt. Dann ist dei zeitdifferenz eine einfache Subtraktion.

lks
colinardo
Lösung colinardo 28.04.2015, aktualisiert am 10.05.2015 um 18:26:54 Uhr
Goto Top
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:
#!/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  
Grüße Uwe