ubuntuusers.de

Datumsberechnung unter Linux

Status: Ungelöst | Ubuntu-Version: Ubuntu 9.04 (Jaunty Jackalope)
Antworten |

Developer92 Team-Icon

Avatar von Developer92

Anmeldungsdatum:
31. Dezember 2008

Beiträge: 4101

Hallo, wie sicher jeder weiß, gab es da mal den sog. Y2K-Bug, also den Jahr 2000 Bug, ausgelöst durch eine Datumsberechnung mit lediglich dem Jahr und Jahrzehnt (00 für Jahr 2000 usw.). Aber es wurde bereits kurz darauf der Jahr 2038 Bug entdeckt (Wers nicht weiß: Das Datum wird mit einem 32 bit Integer berechnet. Und der hat natürlich auch seine Grenzen. Siehe auch hier)

Und jetz meine Frage: Trifft das für Linux auch zu? Denn es wäre ja eig. einfach, ein neues Datumsformat zu erzeugen. Man könnte ja auch einen 64 bit Integer verwenden oder so. Oder das Datum anders speichern. Ideen gibt es dazu sicherlich viele.

Also, wie gesagt: Trifft das Problem auch auf Linux zu?

mfg Floh

jug Team-Icon

Ehemalige
Avatar von jug

Anmeldungsdatum:
19. März 2007

Beiträge: 12335

Wohnort: Berlin

TDeveloper schrieb:

Und jetz meine Frage: Trifft das für Linux auch zu? Denn es wäre ja eig. einfach, ein neues Datumsformat zu erzeugen. Man könnte ja auch einen 64 bit Integer verwenden oder so.

Ja, das Problem trifft auch auf Linux zu. Und dein Link enthält übrigens auch einen Abschnitt der lautet „Abhilfe“ – hast du den auch gelesen? Der Integer wird auf 64bit erhöht, und dann haben wir einen Timestamp der 292 Milliarden Jahre hält, ich wage mal zu behaupten: eher sterben wir aus, als dass wir dann noch ein Problem mit den Zeitstempeln bekommen.

~jug

Developer92 Team-Icon

(Themenstarter)
Avatar von Developer92

Anmeldungsdatum:
31. Dezember 2008

Beiträge: 4101

jug schrieb:

TDeveloper schrieb:

Und jetz meine Frage: Trifft das für Linux auch zu? Denn es wäre ja eig. einfach, ein neues Datumsformat zu erzeugen. Man könnte ja auch einen 64 bit Integer verwenden oder so.

Ja, das Problem trifft auch auf Linux zu. Und dein Link enthält übrigens auch einen Abschnitt der lautet „Abhilfe“ – hast du den auch gelesen?

Jap, hab ich.

Aber das war mir vorhin beim Schreiben meiner Frage ziemlich egal. Ich meine, wie kommt man auf diese dämliche Idee, jede Sekunde zählen zu lassen? Gibts da keine bessere Lösung dafür? Das Speichern des Datums und der Uhrzeit, so wie es jetzt ist, ist schon ziemlich genial, weil man das ganze Datum/Zeit aus einer einzigen Zahl berechnen kann. Aber man kann doch nicht für jede Sekunde das Datum und die Zeit neu berechnen lassen. Ist doch blöd, jedesmal den Prozessor anspringen zu lassen ☺

Als Speichermedium ist also 32bit Integer meiner Meinung nach schon geeignet, aber nicht, um damit zu arbeiten.

Hoffe, du verstehst was ich meine.

mfg Floh

ChemicalBrother Team-Icon

Ehemaliger

Anmeldungsdatum:
17. Mai 2007

Beiträge: 3136

TDeveloper schrieb:

Ich meine, wie kommt man auf diese dämliche Idee, jede Sekunde zählen zu lassen? Gibts da keine bessere Lösung dafür? Das Speichern des Datums und der Uhrzeit, so wie es jetzt ist, ist schon ziemlich genial, weil man das ganze Datum/Zeit aus einer einzigen Zahl berechnen kann. Aber man kann doch nicht für jede Sekunde das Datum und die Zeit neu berechnen lassen. Ist doch blöd, jedesmal den Prozessor anspringen zu lassen ☺

A) Der Prozessor ist doch eh an, da kann er auch diese Minirechnung, die ihn fast nicht belastet, auch mal nebenbei berechnen.

B) Wie willst du denn die Zeit sonst bestimmen? Und vorallem, wie soll die CPU die Zeit berechnen? Die CPU kann mit Mittwoch, 23. September, 23:00 Uhr und 16 Sekunden nichts anfangen, aber mit einer einzigen Zahl schon. Die wird halt für den normalen Nutzer umgerechnet, damit sie ihm auch was sagt.

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

Wenn man wirklich 32 Bit für den Zeitstempel verwendet hätte, wäre das alles kein Problem, zumindest nicht zu unseren Lebzeiten. Es wird aber auf den meisten Systemen eine vorzeichenbehaftete 32-Bit-Ganzzahl verwendet, so dass man letzten Endes nur 31 Bit zur Verfügung hat.

Aber man kann doch nicht für jede Sekunde das Datum und die Zeit neu berechnen lassen. Ist doch blöd, jedesmal den Prozessor anspringen zu lassen

Ich kann nur hoffen, dass das ein Witz sein sollte...

Colttt

Anmeldungsdatum:
29. April 2009

Beiträge: 1517

ist doch wurst, damls 2000 habn auch alle gesagt das nichts mehr geht und was war?! richtig NICHTS..

Developer92 Team-Icon

(Themenstarter)
Avatar von Developer92

Anmeldungsdatum:
31. Dezember 2008

Beiträge: 4101

ChemicalBrother schrieb:

TDeveloper schrieb:

Ich meine, wie kommt man auf diese dämliche Idee, jede Sekunde zählen zu lassen? Gibts da keine bessere Lösung dafür? Das Speichern des Datums und der Uhrzeit, so wie es jetzt ist, ist schon ziemlich genial, weil man das ganze Datum/Zeit aus einer einzigen Zahl berechnen kann. Aber man kann doch nicht für jede Sekunde das Datum und die Zeit neu berechnen lassen. Ist doch blöd, jedesmal den Prozessor anspringen zu lassen ☺

A) Der Prozessor ist doch eh an, da kann er auch diese Minirechnung, die ihn fast nicht belastet, auch mal nebenbei berechnen.

Ja, aber es kostet eben doch Rechenzeit. Überleg doch mal logisch: Du musst die Zahl von Sekunden nach Minuten über Stunden schließlich in Tage, Wochen, Monate und Jahre umrechnen. Ist doch blöd.

B) Wie willst du denn die Zeit sonst bestimmen? Und vorallem, wie soll die CPU die Zeit berechnen? Die CPU kann mit Mittwoch, 23. September, 23:00 Uhr und 16 Sekunden nichts anfangen, aber mit einer einzigen Zahl schon. Die wird halt für den normalen Nutzer umgerechnet, damit sie ihm auch was sagt.

Aber die CPU könnt alternativ auch für Sekunde, Minute, Stunde usw. einen eigene Zahl haben. Kostet zwar im Prozessor mehr Chache, aber Berechnung wäre einfacher.

Hello World schrieb:

Wenn man wirklich 32 Bit für den Zeitstempel verwendet hätte, wäre das alles kein Problem, zumindest nicht zu unseren Lebzeiten. Es wird aber auf den meisten Systemen eine vorzeichenbehaftete 32-Bit-Ganzzahl verwendet, so dass man letzten Endes nur 31 Bit zur Verfügung hat.

Das ist auch ne gute Idee. Wär eig. ne super einfache Lösung.

Aber man kann doch nicht für jede Sekunde das Datum und die Zeit neu berechnen lassen. Ist doch blöd, jedesmal den Prozessor anspringen zu lassen

Ich kann nur hoffen, dass das ein Witz sein sollte...

Ne, war mein voller Ernst 😀

Colttt schrieb:

ist doch wurst, damls 2000 habn auch alle gesagt das nichts mehr geht und was war?! richtig NICHTS..

Hä? Natürlich war da was. Es wurden überstürzt hunderte von Menschen einfach zu y2k-Fachleuten benannt, die die Fehler in der Datumsberechnung in den Programmen und Betriebssystemen finden sollten. Das hatte massig Geld gekostet. Und jedes OS musste ja irgendwie gepatcht werden. Ausserdem hatte jeder 2. Angst, wertvolle Daten zu verlieren.

Von wegen, da war nix...

Greebo

Avatar von Greebo

Anmeldungsdatum:
21. November 2006

Beiträge: 3443

Wohnort: 97070 Würzburg

Möglichkeit 1 Lazy Evaluation: Man nehme einen Sekundenticker und errechne sofern gewünscht die gewünschten Anteile Tage/Stunden/Minuten etc.. Die Aktualisierung besteht aus einem einfachen Inkrement.

Möglichkeit 2 Direct Evaluation: Man wähle sofern gewünscht die Anteile direkt, die Aktualisierung besteht aus einem Inkrement des Niederwertigsten Feldes. Sollte das Feld eine gegebene Grenze überschreiten, findet ein Übertrag in ein höheres Feld statt, sollte das Feld eine gegebene Grenze überschreiten, findet ein Übertrag statt, sollte das... (Schaltjahrregelungen, Zeitkorrekturen u.ä. Verbrechen mal außenvor)

Du kannst dir aussuchen was rechenintensiver ist 😉

Und nein, man kann sowas schlecht einfach in Hardware giessen. Ansonsten beschweren sie die Nationen mit ungregorianischer Zeitrechnung oder umgekehrt, Somalia hat IIRC auch seinen eigenen Kalender ich bin sicher es finden sich noch mehr. Man abgesehen davon, dass meistens die Zeitanzeige sekundär ist, und man eher wissen will wieviel Ticks zwischen 2 Aktionen liegen o.ä.

Colttt

Anmeldungsdatum:
29. April 2009

Beiträge: 1517

Hä? Natürlich war da was. Es wurden überstürzt hunderte von Menschen einfach zu y2k-Fachleuten benannt, die die Fehler in der >Datumsberechnung in den Programmen und Betriebssystemen finden sollten. Das hatte massig Geld gekostet. Und jedes OS musste ja irgendwie >gepatcht werden. Ausserdem hatte jeder 2. Angst, wertvolle Daten zu verlieren.

also bei mir und all meinen freunden (Win98/95/NT) war nirgends irgendwas und das sogar ohne patch-gedöns.. und selbst in den nachrichten habn sie gesagt das da nicht wirklich was war..

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6502

Wohnort: Hamburg

Ich meine, wie kommt man auf diese dämliche Idee, jede Sekunde zählen zu lassen?

Ist doch ganz einfach, man brauchte schnell mal etwas und hat das dann so gemacht. Wer konnte denn damals ahnen, das so ein Betriebssystem nach mehr als 30 Jahren noch aktuell ist?

Mich würde allerdings mal interessieren wie man das Datumsformat unter Multics festgelegt hatte (habe jetzt mal eben auf die Schnelle keine Lust den verlinkten Quellcode zu durchsuchen. Den würde ich vermutlich sowiso nicht verstehen).

Denn nach einem Artikel, den ich seinerzeit mal in der Zeitschrift Byte (gibt es anscheinend nicht mehr) gelesen hatte, ist der name Unix nur ein Wortspiel der Revoluzzer, abgeleitet aus Multics (siehe auch: Geschichte von Unix).

Skittles

Avatar von Skittles

Anmeldungsdatum:
6. April 2006

Beiträge: 599

Wohnort: Bochum

Also mal aus Programmierersicht: Die Sekunden haben auch den Vorteil, dass man damit wunderbar rechnen kann, da sonst rechnen mit Daten eher bescheiden ist.

Antworten |