Datumsunterstützung für das Jahr 2000

Visual FoxPro wurde hinsichtlich der Datumsunterstützung für das Jahr 2000 verbessert. Dieser Abschnitt beschreibt die an Visual FoxPro vorgenommenen Verbesserungen zur einfacheren Erstellung von Anwendungen, die mit dem Jahr 2000 verträglich sind.

SET CENTURY TO

Die Dokumentation besagt, dass SET CENTURY TO ohne zusätzliche Argumente das Jahrhundert auf das aktuelle Jahrhundert einstellt. Dies stimmt nur für das 20. Jahrhundert, da das Jahrhundert unabhängig vom aktuellen Jahrhundert auf 19 gesetzt wird. Nun in Visual FoxPro stellt SET CENTURY TO das Jahrhundert auf das aktuelle Jahrhundert ein. Darüber hinaus wird der Wert von SET CENTURY TO in neuen Datensitzungen anfänglich auf das aktuelle Jahrhundert gesetzt.

Außerdem wurde in Visual FoxPro der standardmäßige ROLLOVER-Wert für SET CENTURY auf die beiden letzten Stellen des aktuellen Jahres plus 50 Jahre abgeändert; wenn das aktuelle Jahr 1998 ist, ist nYear gleich 48, nämlich die letzten beiden Stellen von 2048 (1998 + 50).

Weitere Informationen finden Sie unter "SET CENTURY".

Festgelegte Datenformate

Normalerweise werden Datums- und Datums-/Zeitkonstanten oder -ausdrücke basierend auf den aktuellen Einstellungen von SET DATE und SET CENTURY zu der Zeit, zu der die Konstanten oder Ausdrücke kompiliert werden, interpretiert. Dies bedeutet, dass viele Datumskonstanten mehrdeutig sind, da sie in Abhängigkeit davon, wann sie kompiliert wurden und welche Datumseinstellungen zur Kompilierzeit wirksam waren, evtl. zu unterschiedlichen Werten ausgewertet werden.

Ist also beispielsweise die Datumskonstante {10/11/12} der 11. Oktober 1912, der 11. Oktober 2012, der 10. November 1912, der 12. November 1910 oder der 12. November 2010?

Das hängt alles von den aktuellen Einstellungen von SET DATE und SET CENTURY TO ab. Dies kann zu neuen Fehlern in vorhandenem Visual FoxPro-Code führen, wo Datums- oder DatumZeit-Konstanten oder –Ausdrücke zur Laufzeit entweder kompiliert oder ausgewertet werden, wie etwa in Berichts- und Objektausdrücken. Dies kann bei vorhandenem Code zu Unverträglichkeiten mit dem Jahr 2000 führen, wenn die Einstellung von SET CENTURY in das Jahr 2000 überläuft und kein vierstelliges Jahr angegeben ist.

Zur Vermeidung von Inkompatibilitäten ist nun in Visual FoxPro ein festgelegtes Datumsformat verfügbar. Ein festgelegtes Datum wird unabhängig von irgendwelchen Datumseinstellungen immer zum selben Datums- oder Datums-/Zeitwert ausgewertet. Das festgelegte Datumsformat ist folgendes:

^yyyy-mm-dd[,][hh[:mm[:ss]][a|p]]

Das Zirkumflex (^) bezeichnet immer ein festgelegtes Datumsformat und bewirkt, dass Daten und Zeiten immer im YMD-Format interpretiert werden. Gültige Datums- und Datums-/Zeitseparatoren sind Bindestriche, Schrägstriche, Punkte und Leerzeichen.

Leere Daten und Zeiten werden nicht als mehrdeutig angesehen und sind immer gültig. Zu den gültigen leeren Datums- und DatumZeit-Formaten gehören {}, { — } und { — ,:}.

Mit festgelegten Datumsformaten ist eine größerer Bereich von Datums- und Datums-/Zeitwerten verfügbar. In Visual FoxPro 5.0 ist der kleinste formulierbare Datumswert {^0100/1/1}, d. h. der 1. Januar 100 n. Chr. Dies liegt daran, dass Jahrwerte unter 100 basierend auf der Einstellung von SET CENTURY immer auf das nächste Jahrhundert aufgerundet wurden.

Das kleinste gültige Datum in Visual FoxPro ist {^0001-01-01}, d. h. der 1. Januar 1 n. Chr. Das größte gültige Datum in Visual FoxPro ist {^9999-12-31}, d. h. der 31. Dezember 9999 n. Chr.

Beachten Sie, dass das festgelegte Datumsformat die TAIWAN-Einstellung für SET DATE ignoriert, so dass das Jahr eines festgelegten Datums- oder Datums-/Zeitformats immer dem westlichen Kalender entspricht. (Beachten Sie, dass dies in Visual FoxPro 5.0 nicht gilt.)

SET STRICTDATE

Mit dem neuen Befehl SET STRICTDATE lassen sich mit dem Jahr 2000 verträgliche Datumskonstanten und Datumszeichenfolgen erzwingen.

SET STRICTDATE TO 0

STRICTDATE auf 0 zu setzen, bedeutet, das die Überprüfung des festgelegten Datumsformats ausgeschaltet ist. 0 ist die Standardeinstellung für die Visual FoxPro-Laufzeitunterstützung und ODBC-Treiber. Wenn STRICTDATE auf 0 gesetzt wird, werden ungültige Datums- und Datum-/Zeitwerte auf das leere Datum ausgewertet.

SET STRICTDATE TO 1

Wird STRICTDATE auf 1 gesetzt, müssen alle Datums- und Datums-/Zeitkonstanten im festgelegten Datumsformat sein. Alle Datums-/Zeitkonstanten, die nicht im festgelegten Format sind oder zu einem ungültigen Wert ausgewertet werden, führen entweder während der Kompilierung, zur Laufzeit oder während einer interaktiven Visual FoxPro-Sitzung zu einem Fehler. Bei 1 handelt es sich um den Standardwert für eine interaktive Visual FoxPro-Sitzung.

SET STRICTDATE TO 2

Diese Einstellung ist mit der Einstellung 1 für STRICTDATE identisch, generiert darüber hinaus aber ebenfalls einen Kompilierungsfehler (2033 – CTOD und CTOT produzieren u. U. falsche Ergebnisse), sobald die Funktionen CTOD( ) und CTOT( ) im Code angezeigt werden.

Da die in den durch CTOD( ) und CTOT( ) enthaltenen Datenzeichenfolgen mithilfe von SET DATE und SET CENTURY interpretiert werden, können Fehler aufgrund der Nichtkonformität mit dem Jahr 2000 auftreten. Verwenden Sie DATE( ) und DATETIME( ) mit optionalen numerischen Argumenten, um Datums- und Datums-/Zeitkonstanten und Ausdrücke zu erstellen.

Diese Einstellung kann sinnvoll beim Debuggen eingesetzt werden, denn sie ermöglicht das Verfolgen von Code, der Fehler bezüglich der Jahr 2000-Kompatibilität enthält.

Fehler des festgelegten Datumsformats

Die folgenden neuen Fehler wurden zu Visual FoxPro hinzugefügt und können erzeugt werden, wenn SET STRICTDATE auf 1 oder 2 eingestellt ist.

Dialogfeld Optionen

Die Registerkarte Allgemein des Dialogfeldes Optionen enthält nun ein Dropdown-Listenfeld Jahr 2000-Einhaltung, das die Einstellung von SET STRICTDATE angibt. Wie bei allen anderen Elemente des Dialogfelds Optionen wird der Wert für die aktuelle Visual FoxPro-Sitzung gesetzt; die Auswahl von Als Standardeinstellung verwenden speichert die Einstellung in der Windows-Registrierung für die nächste Visual FoxPro-Sitzung.

DATE( )- und DATETIME( )-Funktionen

Die Funktionen DATE( ) und DATETIME( ) unterstützen nun optionale numerische Argumente, mit denen Sie Jahr-2000-verträgliche Datums- oder DatumZeit-Werte erstellen können. Die an diesen Funktionen vorgenommenen Verbesserungen bieten eine vorzügliche Methode zum Erstellen von Datums- und Datums-/Zeitwerten; es ist nicht mehr nötig, zum Erstellen von Datums- und Datums-/Zeitwerten Funktionen zur Zeichenverarbeitung zu verwenden.

FDATE( )-Funktion

Die FDATE( )-Funktion unterstützt nun ein optionales Argument, mit dessen Hilfe Sie ohne Funktionen zur Zeichenverarbeitung die Zeit bestimmen können, zu der eine Datei zuletzt geändert wurde. Beispielsweise war es in früheren Versionen von Visual FoxPro nötig, Code wie den folgenden zu schreiben, um festzustellen, wann die Visual FoxPro-Ressourcendatei zuletzt modifiziert wurde:

tLastModified = CTOT(DTOC(FDATE('Foxuser.dbf')) + ' ' ;
   + FTIME('Foxuser.dbf') 

Dieser Code lässt sich nun durch folgenden ersetzen:

tLastModified = FDATE('Foxuser.dbf', 1)

Century-Eigenschaft

In Visual FoxPro ist der Standardwert für die Century-Eigenschaft 1 (An). Der Jahrhundertteil des Datums wird in einem Textfeld angezeigt. In vorherigen Versionen von Visual FoxPro ist der Standardwert 2, d. h. die Einstellung von SET CENTURY bestimmt, ob der Jahrhundertteil des Datums angezeigt wird.

Siehe auch

Grafikunterstützung in Visual FoxPro | Erstellen von Access- und Assign-Methoden | Access- und Assign-Methoden | SET CENTURY | SET DATE