Sonstiges: Datum und Zeit im '30. Dezember 1899 0 Uhr'-Format
Zugegeben - dieser Artikel hat einen seltsamen Titel. Aber das Format, von dem hier die Rede ist, wird an so vielen unterschiedlichen Stellen auf Windows-PCs verwendet, dass es schwierig ist, einen passenden allgemein gültigen Titel zu finden.
Hier eine - wahrscheinlich nicht vollständige - Liste von alternativen Bezeichnungen
Das bedeutet: Egal, wo Sie mit einem Datumswert, Zeitwert oder kombinierten Datums- und Zeitwert arbeiten, das interne Format ist immer identisch. Damit ist es austauschbar und - wenn man das Format einmal verstanden hat - sehr leicht zu verwenden.
|
Interessant für Sie: Unser PC-Tischrechner. Kaufmännischer Rechner mit Kontrollstreifen! |
Jede Datums- und/oder Zeitangabe wird als Fliesskommazahl zwischen -657434 und 2958465.99999 verarbeitet. Dazu einige Beispiele:
| Fliesskommawert | Datum | Uhrzeit |
|---|---|---|
| -657434 | 01.01.0100 | 00:00:00 |
| 0 | 30.12.1899 | 00:00:00 |
| 0,75 | 30.12.1899 | 18:00:00 |
| 2958465,99999 | 31.12.9999 | 23:59:59 |
Dieses Format sieht auf den ersten Blick möglicherweise sehr verwirrend aus. Wer kann sich schon merken, dass der 1. Januar 2000 12 Uhr Mittag irgendwo intern als der Fliesskommawert '36526.5' verarbeitet wird. Aber das ist auch nicht unbedingt erforderlich.
Mit Hilfe dieses Formates wird es 'extrem' einfach mit Datumsangaben und Zeitangaben zu rechnen. Beispiele:
| Berechnung | Interne Darstellung | Formatierte Ausgabe |
|---|---|---|
| 1. Januar 2000 + 49 Tage | 36526 + 49 = 36575 | 19.02.2000 |
| Differenz aus 12:31 und 13:54 | 0,579167 - 0,5215278 = 0,0576392 | 01:23 |
| 06:28 + 2h 13Min | 0,26944 + (1 / 24 * 2) + ((1 / (24 * 60) * 13) = 0,3618011 | 08:41 |
| 08:20 * 30 Euro/Std | 0,34722 * 30 * 24 = 249,9984 | 250,00 Euro |
| --- | (1 / 24) = 0,041667 | 01:00:00 (eine Stunde) |
| --- | (1 / (24 * 60)) = 0,0006944 | 00:01:00 (eine Minute) |
Die Fliesskommazahlen in diesem Beispiel mögen unübersichtlich wirken. Der entscheidende Punkt ist, dass man auf Datums- und Zeitangaben normale arithmetische Operationen anwenden kann.
Hier muss die Sichtweise berücksichtigt werden
In den meisten Fällen erledigt Excel (oder auch Access) alles Notwendige im Hintergrund.
Wenn jemand einen beliebigen Wert, der als Datums- oder Zeitangabe interpretiert werden kann, eingibt, übernimmt Excel diesen Wert intern in das hier beschriebene Format und gibt den Inhalt passend formatiert aus . Siehe nachstehendes Beispiel:
Dieser Automatismus hat jedoch Tücken:

Trotz dieser Tücken ist es in den meisten Fällen keine gute Idee, wenn man versucht, die normale Verarbeitung von Datums-/Zeitwerten in Excel zu unterbinden. Zum einen verhindern Sie damit unter Umständen dass mit den Werten gerechnet werden kann (wie oben beschrieben). Darüber hinaus hat dieses Format noch einen weiteren Vorteil: Wenn Sie Ihre Berechnung z.B. an einen englischsprachigen Kollegen weitergeben und dieser die Berechnung an seinem PC öffnet, wird er alle Werte in der in seinem Kulturkreis üblichen Schreibweise sehen und damit richtig verstehen. Beispiel: Im angelsächsichen Sprachraum werden Datumsangaben oft in der Form Monat, Tag, Jahr (April, 1, 2007) geschrieben.
Anmerkung: Auch wenn das hier Geschriebene in erster Linie auf VB/VBA/VBS ausgerichtet ist, so kann - zumindest in Windows-Umgebungen - auch mit C++ entsprechend programmiert werden. Allerdings ist das nicht so wunderbar einfach wie mit VB.
VB-Programmierer benötigen nur einige wenige der VB-Konvertierungs-Anweisungen, um leicht und elegant das hier beschriebene Format zu verwenden.
Darüber hinaus können in manchen Situationen folgende VB-Konvertierungs-Anweisungen hilfreich sein:
Folgende Beispiele sollten alles Notwendige für die tägliche Programmierpraxis zeigen.
| Anweisung | Ausgabe | Anmerkung |
|---|---|---|
| Now() | Z.B.: 18.02.2007 14:29:43 | Momentanes Datum und Uhrzeit im Standardformat des Betriebssystems |
| Format(Now(), "hh:MM:ss") | Z.B.: 14:33:58 | Momentane Uhrzeit in definiertem Format |
| Format(Now(), "dd.mm.yyyy") | Z.B.: 18.02.2007 | Momentanes Datum in definiertem Format |
| CDbl(CDate("08:20")) | Z.B.: 0,347222222222222 | Die Uhrzeit 08:20 als Bruchteil eines ganzen Tages |
| CLng(CDate("01.01.2000")) | 36526 | Die Anzahl der Tage seit dem '0-Tag', dem 30.12.1899 |
| CDbl(CDate("01.01.2000 08:20")) | 36526,3472222222 | Die Anzahl der Tage seit dem '0-Tag', dem 30.12.1899 plus die Uhrzeit 08:20 als Bruchteil eines ganzen Tages |
| Format(36526.3472222222, "dd.mm.yyyy hh:MM") | 01.01.2000 08:20 | Datums- und Zeitwert der angegebenen Zahl im angegebenen Format. |
| Format(36526.3472222222, "dd.mm.yyyy") | 01.01.2000 | Datumswert der angegebenen Zahl im angegebenen Format. Zeitanteil unberücksichtigt. |
| Format(36526.3472222222, "hh:MM") | 08:20 | Zeitwert der angegebenen Zahl im angegebenen Format. Datumanteil unberrücksichtigt. |
| Format(0.75, "hh:MM") | 18:00 | Zeitwert der angegebenen Zahl im angegeben Format. |
| Format(DateSerial(2006, 13, 32), "dd.mm.yyyy") | 01.02.2007 | Formatierte Ausgabe des Datums 32.13.2006. Bitte beachten, Sie wie elegant DateSerial() diesen scheinbar unsinnigen Aufruf verarbeitet und daraus ein sinnvolles Datum macht. Selbstverständlich arbeitet DateSerial() auch mit 'normalen' Angaben für Tag, Monat und Jahr. |
| CDbl(TimeSerial(18, 30, 02)) | 0,770856481481481 | Zeitwert von 18:30:02. |
| TimeSerial(18, 70, 02) | 19:10:02 | Auch TimeSerial() kommt problemlos mit scheinbar unsinnigen Parametern zurecht. Wird die Format() Anweisung weggelassen wird (wie auch bei DateSerial()) das Standardformat des Betriebssystems verwendet. |
Wenn Sie wissen wollen, was so alles auf Ihrem PC passiert!
Tischrechner als Software.
Jetzt herunterladen und kostenlos testen!
Tastenkombinationen können PC-Arbeit erheblich beschleunigen.
Eine Reihe von kostenlosen Online-Berechnungen zur Erleichterung der täglichen Arbeit.
Sicherheit im PC-Bereich
Es existiert eine kostenlose, einfache und äußert effektive Methode, fast alle Viren, Trojaner, Würmer ...