Datum / Zeit in VisualBasic
Für Datums- und Zeitangaben
stellt VisualBasic den Datentyp Date zur Verfügung.
In seinem Aufbau entspricht
der Datentyp Date dem Datentyp Double.
Ein Datum (mit evtl. zusätzlicher Zeitangabe) wird, sofern es als Datentyp Date
definiert ist, intern als Zahl vom Datentyp Double gespeichert.
Dabei gilt folgende
Vereinbarung:
Vor dem Komma wird die Anzahl Tage seit dem 30. Dezember 1899 angegeben, der
Wert nach dem Komma gibt die Uhrzeit an.
Der 30. Dezember 1899
00:00:00 Uhr wird durch die Zahl 0 dargestellt.
Der 30. Dezember 1899 12:00:00 Uhr wird durch die Zahl
0,5 dargestellt.
Mit der Umwandlungsfunktion
cDate( ) kann ein gültiger Datumsausdruck in ein
Datum vom Datentyp Date umgewandelt werden.
Datumsausdrücke die mit cDate( ) umgewandelt werden
können sind z.B.:
"1. Januar 2000"
"1. Januar 2000 15:36:35"
"1.1.2000"
"1.1.00"
usw.
Ebenso können Werte vom Typ Double in ein Datum umgewandelt werden.
cdate(36526.5) ergibt das Datum 1.1.2000 12:00:00
(siehe hierzu auch Online-Hilfe zu VB:
Format$,
benannte Datumsformate,
benutzerdefinierte Datumsformate)
Bei nur zweistelliger Angabe des Jahres in einem umzuwandelnden Datumsausdruck
wird nach folgender Regel verfahren:
Windows 95/98:
Jahr 00 bis Jahr 29 wird als Jahr 2000 bis Jahr 2029 interpretiert.
Jahr 30 bis Jahr 99 wird als Jahr 1930 bis Jahr 1999 interpretiert.
Bei Windows ME,
Windows 2000 u. Windows XP ist die Zuordnung bei zweistelligen
Jahresangaben in der Systemsteuerung (Ländereinstellung/Datum) einstellbar.
cDate("1. Januar 2000 12:00:00") ergibt die
Zahl 36526,5 .
Wird nun versucht diese Behauptung mit Debug.Print cDate("1. Januar 2000
12:00:00") nachzuprüfen, so kann dies leicht zu einer falschen
Vorstellung vom Datentyp Date führen.
Mit Debug.Print cDate("1. Januar 2000
12:00:00") erhält man nämlich
"01.01.00 12:00:00".
Debug formatiert das aus cDate( ) erhaltene Datum
gleich wieder entsprechend den für das System geltenden Datumseinstellungen.
Mit Debug.Print
cDbl(cDate("1. Januar 2000 12:00:00"))
erhält man das wahre Ergebnis mit 36526,5 .
Mit Hilfe des Datentyps Date
lassen sich auch Datums/Zeit-Angaben vor dem 30.12.1899 darstellen. Tage die vor
dem 30.12.1899 liegen erhalten einfach ein negatives Vorzeichen.
Debug.Print cDBL(cDate("29.12.1899"))
ergibt -1.
Ein Datum sollte also immer
als Datentyp Date verarbeitet werden. Beim Speichern eines Datums in einer
Datenbank sollte immer der Datentyp Date verwendet werden, um Probleme wie sie
bei unterschiedlich formatieren Strings auftreten können von vorneherein zu
vermeiden..
Ein mit dem Datentyp Date (Zahl mit x Stellen vor dem Dezimaltrennzeichen für
das Jahr und Stellen nach dem Dezimaltrennzeichen für die Uhrzeit) gespeichertes
Datum kann mit Hilfe der Funktionen cDate( ) und Format$( ) in jedem gewünschten
Format wieder ausgegeben werden
Format$(36526.5,"dd.mm.yyyy hh:nn:ss")
ergibt "01.01.2000 12:00:00"
Format$(36526.5,"dddd, d. mmmm yyyy
hh:nn:ss") ergibt "Samstag, 1.
Januar 2000 12:00:00"
(Bei der Angabe der Zahl 36526.5 muss wie immer bei Zahlen in VB als
Dezimaltrennzeichen der Punkt verwendet werden)
Manchmal werden Datumsangaben
im amerikanischen Datumsformat mit umgebenden Nummernzeichen (#) benötigt. Auch
hier helfen cDate ( ) und
Format$( ) weiter.
Mit Hilfe von
Format$(cDate("31.12.1999"),"\#mm\/dd\/yyyy\#")
wird aus dem Ausdruck "31.12.1999" der Ausdruck "#12/31/2002#".
Das Zeichen Backslash (\) im vorangegangenen Formatstring der Format$-Funktion
besagt, dass das jeweils nachfolgende Zeichen so wie es ist übernommen werden
soll.
"\#" ergibt im Beispiel also erst mal das führende
Nummernzeichen.
"mm" bewirkt die daran anschließende Ausgabe des
Monats im zweistelligen Format.
"\/" (kein V, sondern Backslash und Schrägstrich)
bewirken die Ausgabe des ersten / nach dem Monat.
"dd" bewirkt die nachfolgende Ausgabe des Tages mit
zwei Stellen.
"\/" (Backslash und Schrägstrich) erzeugt den
Schrägstrich nach dem Tag.
"yyyy" bewirkt die 4-stellige Ausgabe des Jahres.
"\#" erzeugt das abschließende # (Nummernzeichen).
|