Zeitstempel und menschliches Verständnisvon "heute"
Zeitstempel und menschliches Verständnisvon "heute"
am 25.01.2007 14:39:43 von Andreas.von.Rueden
Liebe Perl-Hacker,
eigentlich ist das ein allgemeines Problem, aber es betrifft ein
Perl-Programm, deshalb frage ich hier.
Es ist kein Problem, in einem Programm den momentanen Zeitpunkt
festzuhalten, sofern es sich um maschinelle Dinge handelt. Geht es aber um
eine menschliche Tätigkeit, sind die Begriffe unscharf: Wenn ich etwas
heute nach 24:00 Uhr tue, zähle ich das noch nicht zum folgenden Tag,
sondern zum heutigen.
Nun könnte ich einfach hingehen und als Uhrzeit, sagen wir, 25:00 oder 26:00
Uhr mit heutigem Datum angeben. Das funktioniert aber so nicht, da Perl
diese Uhrzeiten natürlich nicht verarbeiten kann.
Kurz: ich möchte softwareseitig Uhrzeiten nach 24:00 Uhr bis zu einer
bestimmten Grenze zum heutigen Tag zählen lassen, aber so, daà die
Zeitdifferenzen korrekt ausgewertet werden können (z.B. mit Date::Calc).
Hat jemand eine Idee, wie man das lösen kann?
für jede Information dankbar
Andreas
Re: Zeitstempel und menschliches Verständnis von "heute"
am 25.01.2007 14:58:48 von Frank Seitz
Andreas von Rüden wrote:
> eigentlich ist das ein allgemeines Problem, aber es betrifft ein
> Perl-Programm, deshalb frage ich hier.
>
> Es ist kein Problem, in einem Programm den momentanen Zeitpunkt
> festzuhalten, sofern es sich um maschinelle Dinge handelt. Geht es aber um
> eine menschliche Tätigkeit, sind die Begriffe unscharf: Wenn ich etwas
> heute nach 24:00 Uhr tue, zähle ich das noch nicht zum folgenden Tag,
> sondern zum heutigen.
>
> Nun könnte ich einfach hingehen und als Uhrzeit, sagen wir, 25:00 oder 26:00
> Uhr mit heutigem Datum angeben. Das funktioniert aber so nicht, da Perl
> diese Uhrzeiten natürlich nicht verarbeiten kann.
>
> Kurz: ich möchte softwareseitig Uhrzeiten nach 24:00 Uhr bis zu einer
> bestimmten Grenze zum heutigen Tag zählen lassen, aber so, daà die
> Zeitdifferenzen korrekt ausgewertet werden können (z.B. mit Date::Calc).
>
> Hat jemand eine Idee, wie man das lösen kann?
Durch Unterscheidung zwischen einer internen und
einer externen Darstellung von Zeitangaben. Intern arbeitest Du mit
gültigen Zeitangaben, extern mit den "virtuellen Zeiten". Bei der
Eingabe konvertierst Du von der externen Darstellung in
die interne, bei der Ausgabe von der internen in die externe.
GrüÃe
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Re: Zeitstempel und menschliches Verständnis von "heute"
am 25.01.2007 15:12:57 von Wolf Behrenhoff
Andreas von Rüden schrieb:
> Liebe Perl-Hacker,
>
> Es ist kein Problem, in einem Programm den momentanen Zeitpunkt
> festzuhalten, sofern es sich um maschinelle Dinge handelt. Geht es aber um
> eine menschliche Tätigkeit, sind die Begriffe unscharf: Wenn ich etwas
> heute nach 24:00 Uhr tue, zähle ich das noch nicht zum folgenden Tag,
> sondern zum heutigen.
>
> Kurz: ich möchte softwareseitig Uhrzeiten nach 24:00 Uhr bis zu einer
> bestimmten Grenze zum heutigen Tag zählen lassen, aber so, daà die
> Zeitdifferenzen korrekt ausgewertet werden können (z.B. mit Date::Calc).
Wie Frank schon schrieb: intern die echte Zeit speichern und dann bei
Ein- und Ausgabe konvertieren.
Interessant in diesem Zusammenhang ist, dass man vor 2 Jahren (oder 3?)
in Hamburg mit Einführung des durchgehenden Nachverkehrs an Wochenenden
die Fahrpläne umgestellt hat.
Früher waren die Aushänge auf Betriebsbeginn und Ende eingestellt, d.h.
man fand am Montag die erste U-Bahn um beispielsweise 4.20 Uhr und die
letzte um 0.20 Uhr. Ein Bus, der Samstags um 0.55 Uhr fährt, war unter
Freitag zu finden.
Nun fährt Montags die erste Bahn um 0.00, die zweite um 0.20 und die
dritte um 4.20 Uhr, die letzte um 23.40 Uhr.
Man kann hier schön sehen, dass sich an Montags der Fahrplan überhaupt
nicht geändert hat, aber die Darstellung nun anders ist.
Du solltest dein Programm so schreiben, dass die Daten ebenfalls davon
unabhängig sind, wie du sie nun darstellst. Wie entscheidest du
überhaupt, wann ein Tag zu Ende geht? Um 3.00 Uhr, wie bei der
Gültigkeit von DB-Fahrkarten? Um 6.00 Uhr, wie bei der Gültigkeit von
HVV-Fahrkarten? Oder ist das bei dir variabel?
Wolf
Re: Zeitstempel und menschliches Verständnis von "heute"
am 25.01.2007 23:28:00 von Slaven Rezic
Andreas von Rüden writes:
> Liebe Perl-Hacker,
>
> eigentlich ist das ein allgemeines Problem, aber es betrifft ein
> Perl-Programm, deshalb frage ich hier.
>
> Es ist kein Problem, in einem Programm den momentanen Zeitpunkt
> festzuhalten, sofern es sich um maschinelle Dinge handelt. Geht es aber um
> eine menschliche Tätigkeit, sind die Begriffe unscharf: Wenn ich etwas
> heute nach 24:00 Uhr tue, zähle ich das noch nicht zum folgenden Tag,
> sondern zum heutigen.
>
> Nun könnte ich einfach hingehen und als Uhrzeit, sagen wir, 25:00 oder 26:00
> Uhr mit heutigem Datum angeben. Das funktioniert aber so nicht, da Perl
> diese Uhrzeiten natürlich nicht verarbeiten kann.
Klar kann Perl das:
perl -MPOSIX=mktime -e '@l = localtime; $l[1]=0; $l[2]=25; warn scalar localtime mktime @l'
ALs Ausgabe bekommst du 1 Uhr des morgigen Tages.
Die mktime(3)-Dokumentation sagt dazu:
The original values of the tm_wday and tm_yday components of the struc-
ture are ignored, and the original values of the other components are not
restricted to their normal ranges, and will be normalized if needed. For
example, October 40 is changed into November 9, a tm_hour of -1 means 1
hour before midnight, tm_mday of 0 means the day preceding the current
month, and tm_mon of -2 means 2 months before January of tm_year.
>
> Kurz: ich möchte softwareseitig Uhrzeiten nach 24:00 Uhr bis zu einer
> bestimmten Grenze zum heutigen Tag zählen lassen, aber so, daß die
> Zeitdifferenzen korrekt ausgewertet werden können (z.B. mit Date::Calc).
>
> Hat jemand eine Idee, wie man das lösen kann?
>
> für jede Information dankbar
>
> Andreas
--
Slaven Rezic - slaven rezic de
Dump a Tk canvas as an xfig file:
http://search.cpan.org/search?mode=module&query=Tk::CanvasFi g
Re: Zeitstempel und menschliches Verständnisvon "heute"
am 26.01.2007 00:40:10 von Andreas.von.Rueden
Wolf Behrenhoff wrote:
> Du solltest dein Programm so schreiben, dass die Daten ebenfalls davon
> unabhängig sind, wie du sie nun darstellst. Wie entscheidest du
> überhaupt, wann ein Tag zu Ende geht? Um 3.00 Uhr, wie bei der
> Gültigkeit von DB-Fahrkarten? Um 6.00 Uhr, wie bei der Gültigkeit von
> HVV-Fahrkarten? Oder ist das bei dir variabel?
Es geht darum, Ereignisse zu protokollieren, die, im menschlichen
Sinne, "abends" stattfinden, bzw. "vor dem Schlafengehen", was ja auch nach
24:00 Uhr der Fall sein kann. Die Methode mit der externen/internen Zeit
wäre eine Lösung; eine variable Methode wäre schöner, da der menschliche
Tagesrhythmus eben nicht immer gleich ist. Eben so etwas wie "25:00 Uhr".
cu
Andreas
Re: Zeitstempel und menschliches Verständnisvon "heute"
am 26.01.2007 05:46:44 von Thomas Rachel
Wolf Behrenhoff wrote:
>> Kurz: ich möchte softwareseitig Uhrzeiten nach 24:00 Uhr bis zu einer
>> bestimmten Grenze zum heutigen Tag zählen lassen, aber so, daà die
>> Zeitdifferenzen korrekt ausgewertet werden können (z.B. mit
>> Date::Calc).
>
> Wie Frank schon schrieb: intern die echte Zeit speichern und dann bei
> Ein- und Ausgabe konvertieren.
Andere Möglichkeit: beim Speichern einen anderen Datentyp verwenden.
> Interessant in diesem Zusammenhang ist, dass man vor 2 Jahren (oder 3?)
> in Hamburg mit Einführung des durchgehenden Nachverkehrs an Wochenenden
> die Fahrpläne umgestellt hat.
Hier in Saarbrücken wurde diese Umstellung (noch) nicht vollzogen. Als
vorletztes Jahr die StraÃenbahn für ein paar Tage zwecks Einbau einer
Weiche auf Schienenersatzverkehr umgestellt wurde, war an den
entsprechenden Aushängen tatsächlich zu lesen, daà um 26.07 (oder so)
ein Bus fährt. (Nach Nachfrage kan raus, daà sie es vergessen hatten,
von Hand anzupassen.)
Thomas
--
Jabber-ID: glglgl@amessage.info (keine Email-Adresse!)
Warum Jabber, was ist das und wie geht das?
http://de.wikibooks.org/wiki/Jabber-Kompendium:_Schnelleinst ieg
Re: Zeitstempel und menschliches Verständnis von "heute"
am 26.01.2007 07:00:39 von Frank Seitz
Andreas K. H. von Rüden wrote:
>
> Es geht darum, Ereignisse zu protokollieren, die, im menschlichen
> Sinne, "abends" stattfinden, bzw. "vor dem Schlafengehen", was ja auch nach
> 24:00 Uhr der Fall sein kann. Die Methode mit der externen/internen Zeit
> wäre eine Lösung; eine variable Methode wäre schöner, da der menschliche
> Tagesrhythmus eben nicht immer gleich ist. Eben so etwas wie "25:00 Uhr".
Sowas wie "25:00 Uhr 26.01.2007" wäre die externe Repräsentation
zur internen Repräsentation "01:00 Uhr 27.01.2007".
GrüÃe
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Re: Zeitstempel und menschliches Verständnisvon "heute"
am 26.01.2007 14:45:53 von Andreas.von.Rueden
Slaven Rezic wrote:
> Klar kann Perl das:
>
> perl -MPOSIX=mktime -e '@l = localtime; $l[1]=0; $l[2]=25; warn scalar
> localtime mktime @l'
>
> ALs Ausgabe bekommst du 1 Uhr des morgigen Tages.
>
> Die mktime(3)-Dokumentation sagt dazu:
>
> The original values of the tm_wday and tm_yday components of the
> struc- ture are ignored, and the original values of the other
> components are not
> restricted to their normal ranges, and will be normalized if needed.
> For example, October 40 is changed into November 9, a tm_hour of -1
> means 1 hour before midnight, tm_mday of 0 means the day preceding
> the current month, and tm_mon of -2 means 2 months before January of
> tm_year.
Das klingt sehr gut! Scheint genau das zu sein, was ich suche. Wie kann ich
aber solche Zeiten mit Date::Calc verarbeiten?
cu
Andreas
Re: Zeitstempel und menschliches Verständnis von "heute"
am 26.01.2007 20:59:22 von Slaven Rezic
Andreas K. H. von Rüden writes:
> Slaven Rezic wrote:
>
>
> > Klar kann Perl das:
> >
> > perl -MPOSIX=mktime -e '@l = localtime; $l[1]=0; $l[2]=25; warn scalar
> > localtime mktime @l'
> >
> > ALs Ausgabe bekommst du 1 Uhr des morgigen Tages.
> >
> > Die mktime(3)-Dokumentation sagt dazu:
> >
> > The original values of the tm_wday and tm_yday components of the
> > struc- ture are ignored, and the original values of the other
> > components are not
> > restricted to their normal ranges, and will be normalized if needed.
> > For example, October 40 is changed into November 9, a tm_hour of -1
> > means 1 hour before midnight, tm_mday of 0 means the day preceding
> > the current month, and tm_mon of -2 means 2 months before January of
> > tm_year.
>
> Das klingt sehr gut! Scheint genau das zu sein, was ich suche. Wie kann ich
> aber solche Zeiten mit Date::Calc verarbeiten?
Date::Calc kennt auch die Funktionen Localtime und Mktime, verwendet
aber im Gegensatz zu den eingebauten Perl-Funktionen die
"natürlichsprachigen" Bereiche für Jahr und Monat.
Gruß,
Slaven
--
Slaven Rezic - slaven rezic de
sf-upload: make batch releases on SourceForge
http://sf-upload.sf.net