datentyp zeit bitte hilfe

Gast #386362
Lesenswert?

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 #386364
Lesenswert?

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 #386365
Lesenswert?

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 #386366
Lesenswert?

@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 #386367
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren