datentyp zeit bitte hilfe

Gast
Deine Tastatur ist kaputt 111!!!!!!elf


Angenommen, Du möchtest in C programmieren, dann könntest Du mal
nachsehen, ob bei Deinem Compiler eine Headerdatei namens "time.h"
dabei ist. Und in die guckst Du mal rein.

Solltest Du in C unter einem Microsoft-Betriebssystem programmieren,
dann könntest Du auch die Win32-API-Funktion GetSystemTime bzw
GetLocalSystemTime verwenden - beide füllen eine Struktur vom Typ
SYSTEM_TIME (definiert in den tiefen von windows.h).

Aber Deine Tastatur ist ja kaputt, da wird das etwas schwierig werden.



!!!!!1111elf
Gast
Es gibt zwei Philosophien bei Derstellung von Datum/Uhrzeit:

(1) Konsequent in einer Grundeinheit, seien das nun Sekunden,
Mikrosekundern oder was auch immer. Aus Unix abgeleitet sind hier
Sekunden seit 1970 gängig, folglich in allen aktuellen Betriebssystemen
oft anzutreffen. Vorteil: Platzbedarf, Vergleich einfach,
Zeitzonenkorrektur einfach. Nachteil: Umwandlung in natürliche
Darstellung ist ziemlich umständlich, vor allem wenn noch gelegentliche
Schaltsekunden berücksichtigt werden sollen.

(2) Getrennte Speicherung der einzelnen Komponenten. Beispiel DOS/FAT:
Da wird die Zeit als 16bit Wert in 5:6:5 Bits dargestellt, was nur
passt wenn man auf jede zweite Sekunde verzichtet. Vorteil: leicht
natürlich darstellbar. Nachteil: rechnen kann man damit praktisch
überhaupt nicht, schon eine Zeitzonenkorrektur ist umständlich.
Gast
Richtig geil ist die interne Zeitdarstellung von Windows NT (und neuer)
im Datentyp FILETIME. Das ist ein 64-Bit-Wert, der die seit 1604
vergangenen 100-Nanosekundenintervalle zählt.
Gast
@Die meisten Elche
Zitat MSDN (Platform SDK: Windows System Information):
"The FILETIME structure is a 64-bit value representing the number of
100-nanosecond intervals since January 1, 1601 (UTC)."
Tatsächlich beginnt bei WinNT-basierten Systemen die FILETIME bereits
1601! ;-) Nicht, daß es wirklich wichtig wäre...
Gast
Wichtig ist es nicht, aber interessant. Übrigens ist das keine Erfindung
von Microsoft (ausser vielleicht die Idee, 100ns Intervalle zu
verwenden).

http://www.decimaltime.hynes.net/dates.html#ansi

"ANSI dates are counted from 1601-01-01 and were adopted by the
American National Standards Institute for use with COBOL and other
computer languages. This epoch is the beginning of the last 400-year
cycle by which leap-years are calculated in the Gregorian calendar. The
last year of this cycle is the only one divisible by 100 that is a
leap-year, which was the year 2000, and which was followed by a new
400-year cycle beginning with 2001. 32-bit versions of the Microsoft
Windows operating system count units of one hundred nanoseconds from
this epoch."

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.