Probleme beim Verarbeiten von Datumswerten
Geschrieben von: Christian Koller 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. Verwandte Artikel
Ein einfacher Eventkalender für Projektteams Wenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |