Verschiedene Zeiten miteinander vergleichen?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Verschiedene Zeiten miteinander vergleichen?

Beitrag von Duff » 08.06.2006 13:46:15

Hallo,

ich stehe hier vor einem Problem, an dem ich noch nicht weiter komme.
Ich möchte ein Script schreiben, in dem ich verschiedene Daten (Datum) miteinander vergleichen möchte und auswerten kann.

Bsp. Aktuelle Zeit minus 10 Tage soll mit der Zeit 2006-05-29 verglichen werden (oder dem Datum 2005-10-06, etc.).

Ich möchte dann alle Daten die älter als die vorgegebene Zeit sind bekommen.

Zur Zeit mache ich es über einfaches subtrahieren, wobei das ganze bei Jahreswechsel usw. nicht stimmt.
Oh, yeah!

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 08.06.2006 14:15:51

hallo

ginge denn auch ein "find . -mtime +10 -print" ?
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

Benutzeravatar
deadeye
Beiträge: 561
Registriert: 14.04.2004 15:32:18
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Ukio, rechts hinterm Feld
Kontaktdaten:

Beitrag von deadeye » 08.06.2006 14:18:22

Ich vermute es geht um Shellscript.
Dann ließ mal

Code: Alles auswählen

man date
.

Konvertiere das Eingabedatum und das Referenzdatum in einen Unix-Timestamp(+%s) und vergleiche die beiden. Damit umgehst Jahreswechsel und der gleichen.

Gruß
deadeye

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 08.06.2006 14:36:24

Oder falls du ein Perlscript hast, das Modul Date::Calc ist fuer sowas recht gut.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 08.06.2006 15:16:07

Erstmal danke für die vielen und schnellen Antworten.

Nochmal zu meinem Vorhaben:
Ich will bestimmte Jobs finden, die in ihrem Namen ein bestimmtes Zeitformat haben. Es gibt meistens immer mehrere Hundert solcher Jobs. Um aber z.B. nur bestimmte zu finden, die älter als eine bestimmte Anzahl von Tagen sind, möchte ich dieses Shell-Script neuschreiben oder aber das alte verbessern, da es nämlich nicht genau berechnet.

Wie kann ich denn dann ein Datum, wie z.B. 2006-05-31 ins Format von %s (date-Funktion) bringen?
Oh, yeah!

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 08.06.2006 15:21:47

wie deadeye schon gescrieben hat: man date

date -d 2006-05-31 +%s
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 08.06.2006 15:32:29

mmh...geht leider nicht, da es die Option %s unter diesem unix-system nicht gibt.

Trotzdem Danke.
Oh, yeah!

Benutzeravatar
deadeye
Beiträge: 561
Registriert: 14.04.2004 15:32:18
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Ukio, rechts hinterm Feld
Kontaktdaten:

Beitrag von deadeye » 08.06.2006 16:43:30

Ja, %s ist eine Gnu Erweiterung. Aber da wir hier in einem Debian-Forum sind, nahm ich an, Du beziehst Deine Aussagen auf ein Debian-System. Hast ja nix anderes gesagt(Tipp fürs nächste Mal: je mehr Informationen Du uns gibst, desto besser und schneller wird Dir geholfen).

Gruß
deadeye

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 08.06.2006 18:49:17

Ja sorry.
Das mit dem UNIX-System vergesse ich öfter (Schreibe ein Script unter linux und kopiere es dann um und es funktioniert nicht).

Ich denke, dass ich einfach versuchen werde, das Datum in die Bestandteile YYYY, MM und DD zu zerlegen um damit dann über if-Anweisungen die einzelnen Bestandteile subtrahiere und entsprechend auswerte.

Müsste denke ich auch irgendwie funktionieren.
Oh, yeah!

Benutzeravatar
deadeye
Beiträge: 561
Registriert: 14.04.2004 15:32:18
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Ukio, rechts hinterm Feld
Kontaktdaten:

Beitrag von deadeye » 08.06.2006 18:57:24

Oder schreib Dir ein kleines C-Programm, das mktime() benutzt und damie die Timestamps erzeugt. mktime() sollte auch auf anderen Unix-ähnlichen Systemen(wir wissen ja noch immer nicht, was Du benutzt) vorhanden sein.

Gruß
deadeye

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 08.06.2006 19:03:45

Ich schaue mal. Es handelt sich um HP-UX.
Aber ich denke, dass ein Shell-Script schneller geht als ein Script in C (wobei ich mich in C auch noch nicht so gut auskenne).
Oh, yeah!

Benutzeravatar
deadeye
Beiträge: 561
Registriert: 14.04.2004 15:32:18
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Ukio, rechts hinterm Feld
Kontaktdaten:

Beitrag von deadeye » 08.06.2006 20:14:47

Duff hat geschrieben:wobei ich mich in C auch noch nicht so gut auskenne
Ja, merkt man an "C-Skript". Das gibt es nicht, denn es gibt nur C-Programme, der Unterschied liegt daran, dass man eiN Skript nur ausführt, C-Programme muss man erst kompilieren und dann ausführen.

Shellscripte lassen sich sicherlich schneller schreiben als C-Programme, allerdings die Ausführungszeit ist im Allgemeinen bei C-Programmen und gleicher Aufgabe schneller. Dafür ist es eben aber auch komplizierter C-Programme zu schreiben.

Gruß
deadeye

Antworten