Geschrieben von: Christian Koller
Kategorie: ASP Tricks
This printed page brought to you by AlphaSierraPapa
Als Entwickler von Web Sites ist das Datumsformat ein Problem, bei dem man sehr schnell anstößt - besonders, wenn man auf deutschen Servern entwickelt (Ländereinstellung), und dann der Provider einen englischsprachig aufgesetzten Server betreibt - mit amerikanischen Datumseinstellungen. In diesem Artikel stelle ich eine Lösung vor, die auf allen Systemen die gewünschten Ergebnisse liefert.
Das in den deutschsprachigen Ländern gebräuchliche Datumsformat hat die Form Tag . Monat . Jahr (13.4.2000).
Hingegen ist in den USA das folgende Datumsformat gebräuchlich: Monat / Tag / Jahr (4/13/2000).
Wenn Sie nun unter ASP mit VBScript programmieren, so benutzt VBScript intern ein prinzipiell von der Ländereinstellung unabhängiges Datumsformat. Erst bei Ausgabe von Datumswerten oder bei der Umwandlung in Strings (Zeichenketten) wird das Datum entsprechend der Ländereinstellung formatiert.
Machen Sie auf einer ASP Seite einmal folgenden Test:
<% ' Laenderkennung auf Deutschland setzen SetLocale("de") strDatum = "14.2.2000" datDatum = CDate(strDatum) deDatum = CStr(datDatum) ' Laenderkennung auf USA setzen SetLocale("en-us") usDatum = CStr(datDatum) Response.Write "Datum (US): " & usDatum & "<br>" & VbCrLf Response.Write "Datum (Deutsch): " & deDatum & "<br>" & VbCrLf %>
Das Ergebnis sieht wie folgt aus:
Datum (US): 2/14/00 Datum (Deutsch): 14.02.00
VBScript verwaltet intern Datumswerte auf eine Art und Weise, daß immer wenn ein Wert vom Variablentyp Date (deutsch. Datum) in einer Variable vom Typ String (deutsch. Zeichenkette) gespeichert wird, dieser Wert der Länderkennung entsprechend in das jeweilige Datumsformat umgewandelt wird. Bei einer Ausgabe einer Variable vom Typ Date mit Response.Write geschieht dies automatisch.
Für den Fall, daß Sie Ihre Internetseiten bei einem amerikanischen Provider hosten (z.B. InnerHost oder DataReturn), so sollten Sie auf einer ASP Seite, die mit Datumswerten arbeitet, die aktuelle Länderkennung für die Seite mittels SetLocale("de") auf Deutsch setzen. Nur so ist sichergestellt, daß deutsch formatierte Datumswerte in Zeichenketten bei der Umwandlung in Daten vom Typ Date richtig interpretiert werden. Dasselbe gilt auch für die Umwandlung eines Wertes von Typ Date in eine Zeichenkette.
Wenn man unter ASP mit Datenbanken wie Microsoft SQL Server 7.0 oder Microsoft Access 2000 arbeitet, dann kann es zu einem anderen Problem kommen. Falls Sie unter ADO (ActiveX Data Objects) mit SQL Befehlen arbeiten, um zum Beispiel Datensätze in eine Datenbank einzufügen, zu ändern oder zu löschen, so müssen Sie einen Datumswert in SQL wie folgt angeben: 'Monat/Tag/Jahr'.
Wie aber wandelt man ein deutsches Datum in ein Datum der US-amerikanischen Form um? Die folgenden VBScript-Funktionen lösen diese Aufgabe. Die Funktion DatumDEZuUS wandelt einen String, der ein deutsch formatiertes Datum enthält, in einen String mit US-amerikanisch formatierten Datum um. Die Funktion DatumUSZuDE macht genau das Gegenteil.
<% Function DatumDEZuUS(deDatum) Dim strDatum, usDatum, dateDatum Dim OriginalLocale strDatum = CStr(deDatum) OriginalLocale = SetLocale("de") dateDatum = CDate(strDatum) SetLocale("en-us") usDatum = CStr(dateDatum) SetLocale(OriginalLocale) DatumDEZuUS = usDatum End Function Function DatumUSZuDE(usDatum) Dim strDatum, deDatum, dateDatum Dim OriginalLocale strDatum = CStr(usDatum) OriginalLocale = SetLocale("en-us") dateDatum = CDate(strDatum) SetLocale("de") deDatum = CStr(dateDatum) SetLocale(OriginalLocale) DatumUSZuDE = deDatum End Function Response.Write "DatumDEZuUS(""14.2.2000""): " Response.Write DatumDEZuUS("14.2.2000") & "<br>" & VbCrLf Response.Write "DatumUSZuDE(""2/14/2000""): " Response.Write DatumUSZuDE("2/14/2000") & "<br>" & VbCrLf %>
Das Ergebnis der letzen 4 Zeilen des vorhergehenden Skripts sieht wie folgt aus:
DatumDEZuUS("14.2.2000"): 2/14/00 DatumUSZuDE("2/14/2000"): 14.02.00
Damit haben Sie alle notwendigen Funktionen an der Hand, um ASP Seiten zu programmieren, die von den Ländereinstellungen des jeweiligen Web Servers unabhängig sind.
This printed page brought to you by AlphaSierraPapa
Ein einfacher Eventkalender für Projektteams
http:/www.aspheute.com/artikel/20020319.htm
Neue Inhalte einer Web Site für den Benutzer hervorheben
http:/www.aspheute.com/artikel/20010509.htm
©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.