Difference between revisions of "User:Stefanw/Werkstatt/Date Issue Calc"

From Apache OpenOffice Wiki
Jump to: navigation, search
(Speicherung des Datums im Dokument)
(Speicherung des Datums im Dokument)
Line 67: Line 67:
  
 
Anders, als die oben erwähnten Anwendungsprogramme, wendet ODF das Zahlenstrahlmodell nicht an. OOo Calc verwendet zwar das Zahlenstrahlmodell an der Oberfläche. Das heißt ein Datum in Calc ist an der Oberfläche letztlich nichts anderes als eine bloße Zahl, die ausdrückt, um den wievielten Tag nach dem 30.12.1899 es sich handelt, und die durch das Zahlenformat der Zelle als lesbar formatiertes Datum erscheint. Dennoch speichert Calc beispielsweise für eine Zelle, die das Datum 1. November 2008 enthält, in der content.xml folgenden XML-Code:
 
Anders, als die oben erwähnten Anwendungsprogramme, wendet ODF das Zahlenstrahlmodell nicht an. OOo Calc verwendet zwar das Zahlenstrahlmodell an der Oberfläche. Das heißt ein Datum in Calc ist an der Oberfläche letztlich nichts anderes als eine bloße Zahl, die ausdrückt, um den wievielten Tag nach dem 30.12.1899 es sich handelt, und die durch das Zahlenformat der Zelle als lesbar formatiertes Datum erscheint. Dennoch speichert Calc beispielsweise für eine Zelle, die das Datum 1. November 2008 enthält, in der content.xml folgenden XML-Code:
 +
 +
<source lang="xml">
 +
  <table:table-cell office:value-type="date" office:date-value="2008-11-01">
 +
    <text:p>1. November 2008</text:p>
 +
  </table:table-cell>
 +
</source>
  
 
==Issue 97669==
 
==Issue 97669==

Revision as of 12:34, 31 December 2008

Der Inhalt dieser Seite steht unter der Lizenz Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland.
Bilder und Dateien können abweichende Lizenzen haben!





User-Bereich von Stefan Weigel

Seiten im User-Bereich:

Tipps

Archiv

Seiten von Stefan im OOo-Wiki:

Marketing

Makro

Dokumente

Theoretische Grundlagen

Darstellung von Datum als numerischer Zeitstrahl

Tabellenkalkulationen und andere Anwendungsprogramme stellen Datum und Zeit auf einem einfachen numerischen Zeitstrahl dar. Das heißt jedes Datum oder Zeitangabe ist nichts anderes, als eine Zahl. Allein das Zahlenformat der Zelle macht, dass eine in der Zelle befindliche Zahl als Datums- oder Zeitangabe lesbar wird.

Der Tag 1. Januar 2009 ist in OOo Calc genau genommen nichts anderes als die Zahl 39814. Es ist nämlich der 39814te Tag seit dem 30.12.1899. Der Zeitstrahl ist "geeicht" in ganzen Tagen, das heißt ein Abschnitt auf dem Zeitstrahl der Länge 1 entspricht genau einem Tag. In Calc ist der Ursprung des Zeitstrahls mit dem Wert 0 definiert als der 30.12.1899. Der Tag 1 auf dem Zeitstrahl ist der 31.12.1899, der Tag 2 auf dem Zeitstrahl ist der 01.01.1900, der Tag 30000 auf dem Zeitstrahl ist der 18.02.1982 und der Tag 39814 auf dem Zeitstrahl ist eben der 01.01.2009.

Unterschiede bei verschiedenen Programmen

Dieses Modell zur Darstellung des Datums macht das Rechnen mit Datums- und Zeitangaben besonders einfach. Deshalb wird dieses Modell von vielen Anwendungsprogrammen, vor allem von Tabellenkalkulationen eingesetzt. Uneinheitlich ist dabei von Programm zu Programm die Festlegung des Ursprungs mit dem Wert 0 des Zahlenstrahls.

Programm Definition des Zeitstrahls
OOo Calc Tag 0 ist der 30.12.1899
StarCalc 1.0 Tag 0 ist der 01.01.1900
MS Excel auf Win Tag 1 ist der 01.01.1900
MS Excel auf Mac Tag 1 ist der 02.01.1904

Beim Austausch von Spreadsheets zwischen den verschiedenen Programmen ist also zu beachten, dass sich Datumsangaben, die in den Zellen durch eine Zahl repräsentiert werden, auf unterschiedliche Nullpunkte beziehen.

Optionen in OOo Calc

Calc bezieht seinen Zeitstrahl für Datums- und Zeitangaben normalerweise auf den als Tag 0 definierten 30.12.1899. Daneben bietet Calc zwei weitere Optionen:

Einstellung Bedeutung
30.12.1899 (Standard) Tag 0 ist der 30.12.1899
01.01.1900 (StarCalc 1.0) Tag 0 ist der 01.01.1900
01.01.1904 Tag 0 ist der 01.01.1904

Optionen-Dialog

Die drei möglichen Einstellungen für das Datumsmodell in Calc korrespondieren mit den Zahlenstrahldefinitionen von StarCalc 1.0, MS Excel auf Windows und MS Excel auf Mac.

  • Für StarCalc 1.0 ist dies offensichtlich.
  • Für MS Excel auf Mac ist die Definition "Tag 0 ist der 01.01.1904" in Calc gleichbedeutend mit der Definition "Tag 1 ist der 02.01.1904" in Excel.
  • Für MS Excel auf Windows weichen die Definition "Tag 0 ist der 30.12.1899" von Calc und die Definition "Tag 1 ist der 01.01.1900" von Excel um einen Tag voneinander ab. Und doch entspricht die Standarddefinition von Calc der Definition von Excel. Dieser scheinbare Widerspruch löst sich auf, wenn man den Datums-Bug in Excel berücksichtigt.

Der Datums-Bug in Excel

Excel hat seit Urzeiten einen Datums-Bug, der nie behoben wurde, vermutlich um die Kompatibilität zu den mit dem Datums-Bug erstellten Dokumenten zu bewahren. Der Fehler in Excel ist, dass in Excel der Tag 29.02.1900, als vermeintlicher Schalttag existiert. In Wahrheit ist das Jahr 1900 aber kein Schaltjahr.

  • Ein Schaltjahr ist, wenn die Jahreszahl durch 4 teilbar ist.
  • Wenn die Jahreszahl aber durch 100 teilbar ist, dann ist es doch kein Schaltjahr.
  • Und wenn die Jahreszahl durch 400 teilbar ist, dann es als Ausnahme von der Ausnahme wieder ein Schaltjahr.

Also das 1600 ist ein Schaltjahr. Die Jahre 1700, 1800 und 1900 sind keine Schaltjahre. Das Jahr 2000 ist ein Schaltjahr.

OOo Calc macht diesen Fehler nicht, versetzt aber den Ursprung seines Zeitstrahls um einen Tag gegenüber Excel und stellt somit eine Kompatibilität zu Excel für alle Datumsangaben ab dem 01.03.1900 her. Tatsächlich weichen Datumsangaben, die vor dem 01.03.1900 liegen aus von Excel importierten Dokumenten in Calc eine Abweichung von einen Tag auf.

Speicherung des Datums im Dokument

Anders, als die oben erwähnten Anwendungsprogramme, wendet ODF das Zahlenstrahlmodell nicht an. OOo Calc verwendet zwar das Zahlenstrahlmodell an der Oberfläche. Das heißt ein Datum in Calc ist an der Oberfläche letztlich nichts anderes als eine bloße Zahl, die ausdrückt, um den wievielten Tag nach dem 30.12.1899 es sich handelt, und die durch das Zahlenformat der Zelle als lesbar formatiertes Datum erscheint. Dennoch speichert Calc beispielsweise für eine Zelle, die das Datum 1. November 2008 enthält, in der content.xml folgenden XML-Code:

  <table:table-cell office:value-type="date" office:date-value="2008-11-01">
    <text:p>1. November 2008</text:p> 
  </table:table-cell>

Issue 97669

  1. Open a new spreadsheet.
  2. Have a look at Tools|Options|Calc|Calculate|Date (should be set to "12/30/1899 (default)").
  3. Enter a date into a cell of the spreadsheet. Remember that date.
  4. Save and close this spreadsheet.

  5. Open another new spreadsheet.
  6. Change Tools|Options|Calc|Calculate|Date to "01/01/1900 (StarCalc 1.0)"
  7. Close the spreadsheet, no matter if you save it or not.

  8. Reopen the first spreadsheet.
  9. Compare the date in the cell to the date you remember. The date that is showing up now is two days before the date you had entered.
  10. Have a look at Tools|Options|Calc|Calculate|Date (it´s still set to "12/30/1899 (default)").

Why has the date changed?

Personal tools