
Ein Kollege sagte mir: „Seit dem 01.01.1900 sind genau 43871 Tage vergangen.“ Heute ist der 10.02.2020.
Ich wollte das mit PowerShell prüfen, bekam aber ein anderes Ergebnis:
PS C:\Windows\system32> New-TimeSpan ([datetime]"01.01.1900") (Get-Date)
Days : 43869
Hours : 11
Minutes : 15
Seconds : 46
Milliseconds : 304
Ich war verwirrt, weil es einen Unterschied von 2 Tagen gab. Also fragte ich den Allmächtigen Google:
Wie Sie sehen, sagt Google auch, dass 43869 Tage vergangen sind, nicht 43871.
Also fragte ich meinen Freund, wie er das berechnet hat. Er hat es in Excel gemacht, indem er eine Zelle auf formatiert hat dateonly
. Wenn er dann ein hineinschreibt int
, wandelt Excel es in ein Datum um, z. B.
15641
wird27.10.1942
19874
wird30.05.1954
43869
wird08.02.2020
(?)43871
wird10.02.2020
(?)
Lebt Excel uns 2 Tage voraus oder warum denkt es, es seien 2 Tage mehr vergangen, als es seit dem 01.01.1900 tatsächlich waren? Übersieht es etwas?
Hier ist ein kleines GIF davon (leider auf Deutsch, da ich ein deutsches Excel habe):
Antwort1
Das Warum:
Erstens rechnen Ihr Freund und Google anders. Excel (mit dem 1900-Datumssystem) geht nur davon aus, dass es seit 1900 einen zusätzlichen Tag gibt.
Excel speichert Daten als Seriennummern, wobei 1-Jan-1900
= 1
Und 10-Feb-2020
-->43871
AlsoTage seitvon Excel sollte sein 43871
- 1
-->43870
Allerdings ist die Excel-Berechnung fehlerhaft.
Als Excel eingeführt wurde, war Lotus123 das führende Tabellenkalkulationsprogramm.
Lotus 123 hatte einen Fehler, der dazu führte, dass das Jahr 1900 als Schaltjahr angesehen wurde.
Aus Kompatibilitätsgründen im Hinblick auf die Konkurrenz enthielt Excel diesen Fehler. Da es sich jedoch 29-Feb-1900
um ein nicht vorhandenes Datum handelt, werden andere Methoden 43869
beim Subtrahieren der beiden Daten korrekt angezeigt.
Übrigens berechnet Excel VBA auch die Datumsdifferenz korrekt -->43869
Antwort2
Microsoft Excel unterstützt zwei verschiedene Datumssysteme. Diese Systeme sind das 1900-Datumssystem und das 1904-Datumssystem
Das 1900-Datumssystem
Im 1900-Datumssystem ist der erste unterstützte Tag der 1. Januar 1900. Wenn Sie ein Datum eingeben, wird das Datum in eine fortlaufende Zahl umgewandelt, die die Anzahl der vergangenen Tage darstellt, beginnend mit 1 für den 1. Januar 1900. Wenn Sie beispielsweise den 5. Juli 1998 eingeben, konvertiert Excel das Datum in die fortlaufende Zahl 35981. Standardmäßig verwendet Microsoft Excel für Windows das 1900-Datumssystem. Das 1900-Datumssystem ermöglicht eine bessere Kompatibilität zwischen Excel und anderen Tabellenkalkulationsprogrammen wie Lotus 1-2-3, die für die Ausführung unter MS-DOS oder Microsoft Windows entwickelt wurden.
Das Datumssystem von 1904
Im 1904-Datumssystem ist der erste unterstützte Tag der 1. Januar 1904. Wenn Sie ein Datum eingeben, wird das Datum in eine Seriennummer umgewandelt, die die Anzahl der seit dem 1. Januar 1904 vergangenen Tage darstellt, beginnend mit 0 für den 1. Januar 1904. Wenn Sie beispielsweise den 5. Juli 1998 eingeben, konvertiert Excel das Datum in die Seriennummer 34519. Aufgrund des Designs früherer Macintosh-Computer wurden Daten vor dem 1. Januar 1904 nicht unterstützt. Dieses Design sollte Probleme im Zusammenhang mit der Tatsache vermeiden, dass 1900 kein Schaltjahr war. In der Vergangenheit verwendete Excel für Macintosh standardmäßig das 1904-Datumssystem für Arbeitsmappen, die auf einem Macintosh erstellt wurden. Excel für Macintosh verwendet jetzt jedoch standardmäßig das 1900-Datumssystem und unterstützt Daten ab dem 1. Januar 1900.
Der Unterschied zwischen den Datumssystemen
Da die beiden Datumssysteme unterschiedliche Starttage verwenden, wird dasselbe Datum in beiden Datumssystemen durch unterschiedliche Seriennummern dargestellt. Beispielsweise kann der 5. Juli 1998 wie folgt zwei unterschiedliche Seriennummern haben.
Date system Serial number of July 5, 1998
1900 date system 35981
1904 date system 34519
Quelle: https://docs.microsoft.com/en-us/office/troubleshoot/excel/1900-and-1904-date-system