TIMESTAMP Umrechnung

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Fuechsin
Beiträge: 133
Registriert: 22.08.2005 07:48:55
Kontaktdaten:

TIMESTAMP Umrechnung

Beitrag von Fuechsin » 25.01.2006 12:00:28

Also, erstmal schildere ich mein Vorhaben:

Ich baue mir grade ein Script, welches eine Textdatei nach folgenden Muster aufbaut:
25/01/2006 in -> 1138186061 out -> 1138186094 --> 0

erstes ist Datum, zweites Anfangszeit, drittes Endzeit und letzter Wert die Differenz.

Das klappt soweit auch alles. Allerdings happert es beim Ausrechnen der Differenz.

Hier mein Denkbeispiel:
$1=1138186061
$2=1138186094
gesamtinsekunden=$(($2 - $1))
bis hierhin geht auch alles...
nun aber die differenz in stunden umwandelnt klappt nicht:
gesamtinstunden=$(($gesamtinsekunden / 60 / 60))

und zwar aus dem einfachen Grund, das nur ganze Zahlen errechnet werden.
als ausgabe hätte ich letzendlich eine ausgabe wie 8,5 für 8 1/2 stunden... halt eine lesbare stundenanzeige...

hat da jemand eine idee zu?

tapferesschneiderlein
Beiträge: 189
Registriert: 11.08.2005 09:27:01

Beitrag von tapferesschneiderlein » 25.01.2006 12:16:48

Schau Dir mal bc an, vielleicht geht sowas wie

Code: Alles auswählen

echo "scale=4; $gesamtinsekunden/3600" | bc

Methusalix

TIMESTAMP Umrechnung

Beitrag von Methusalix » 25.01.2006 18:51:41

Hallo Fuechsin,

ich unterstelle mal, das Du die bash benutzt (obwohl das in der ksh -glaube ich-
auch so ist). Die bash kann nur positive Ganzzahlen verarbeiten. Wenn der Unterschied
groß genug ist, wird schon ein Wert herauskommen (wobei das dann immer noch eine Ganzzahl ist).

Gruß
Matthias

Fuechsin
Beiträge: 133
Registriert: 22.08.2005 07:48:55
Kontaktdaten:

Beitrag von Fuechsin » 26.01.2006 07:46:06

Jap, es war auf der Bash, habe zum ausrechnen einfach perl benutzt.
eine längere lösung wäre einmal den ganzen wert also (/) ausszurechnen und einmal (%) auzurechnen und sich das zusammenzusetzen..

Methusalix

TIMESTAMP Umrechnung

Beitrag von Methusalix » 26.01.2006 13:18:20

Hallo Fuechsin,

ich habe noch mal einen kleinen Hinweis auf Deinen Einstiegsbeitrag (bezogen auf die bash) den ich letztens vergessen habe. Die Klammersetzung in der letzten Formel, bei der dividiert wird, ist so nicht richtig.

Code: Alles auswählen

d=$((((c / 2)) / 2))
wäre korrekt. Da gibt es aber auch noch eine Variante mit eckigen Klammern.

Gruß
Matthias

Antworten