Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

23.09.2005, 10:00

Rechnen mit Zeit

Hallo,

ich habe eine Liste mit mehreren Spalten die erste Spalte ist Datum undie dritte Spalte Uhrzeit in folgendem Format

050828 und 0800
050828 und 0805
050828 und 0810

usw.

Wie funtionert denn die Rechung mit Zeit ?

Ich muss den letzten Wert der Tabelle aus Uhrzeit nehmen und dann - 8 Stunden rechnen und dann alle Zeilen wählen die dazwischen liegen.

cu
Beowulf

TomH

in keinem Vorstand!

Beiträge: 212

Beruf: Systemadministrator

  • Nachricht senden

2

23.09.2005, 11:23

ich würde den Tag (1.Spalte) in Sekunden seit 1.1.1970 umwandeln, dann die Zeit (2. Spalte) dazuaddieren (z.B. im awk) dann die gewünschten Operationen vornehmen (-8 Stunden) und hinterher wieder zurückkonvertieren

thomas@thomas:~> date -d 050828
Son Aug 28 00:00:00 CEST 2005

thomas@thomas:~> date -d 050828 +%s
1125180000

und:
# man date

Thomas
Every feature is a bug, unless it can be disabled.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »TomH« (23.09.2005, 11:24)


3

20.10.2005, 10:46

Hi,

danke für deine Antwort.

Also ich hab jetzt schonmal rausgekriegt wie ich das mit awk von den Sekunden zurück in mein Format konvertieren kann. Aber ich versteh noch nicht so ganz wie ich das Format das ich habe in die Sekunden umwandeln kann. Wäre echt nett wenn du mir da vielleicht nochmal helfen könntest.

Beowulf

TomH

in keinem Vorstand!

Beiträge: 212

Beruf: Systemadministrator

  • Nachricht senden

4

20.10.2005, 11:16

zu Deinem Beispiel:
050828 und 0810

050828 (28.08.2005, 0:00Uhr) entspricht 1125180000 Sekunden

eine Stunde hat 60 Minuten,
eine Minute 60 Sekunden.

0810 (8:10 Uhr) entspricht also 29400 Sekunden

1125180000 + 29400 = 1125209400 (entspricht 28.8.2005 8:10Uhr)

Thomas
Every feature is a bug, unless it can be disabled.

5

20.10.2005, 11:28

Hm,

k, danke das hab ich schonmal verstanden aber ich krieg den Befehl bei awk nicht raus der das format

050828 und 0810

in die Sekundezahl umwandelt.

Beowulf

TomH

in keinem Vorstand!

Beiträge: 212

Beruf: Systemadministrator

  • Nachricht senden

6

20.10.2005, 11:32

# cat liste.txt | awk '{ print "Tag:" $1 " Zeit:" $3 }'

# man awk

Stichworte mktime, substr, ...
Every feature is a bug, unless it can be disabled.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »TomH« (20.10.2005, 11:37)


TomH

in keinem Vorstand!

Beiträge: 212

Beruf: Systemadministrator

  • Nachricht senden

7

20.10.2005, 11:52

cat liste | awk '{ $1="20"$1; datespec=substr($1,0,4)" "substr($1,5,2)" "substr($1,7,2)" "substr($3,0,2)" "substr($3,3,2)" 00"; sekunden=mktime(datespec); print $1 " entspricht " sekunden;}'


die Variable 'sekunden' enthält selbige.

Thomas
Every feature is a bug, unless it can be disabled.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »TomH« (20.10.2005, 11:53)


Thema bewerten