6.2 Datum und Uhrzeit 

DateTime
Es gibt den Datentyp Date zur Speicherung von Datum und Uhrzeit in einer Variablen. Wesentlich weitergehende Informationen und Möglichkeiten bietet die Struktur DateTime. Objekten dieser Struktur stehen zahlreiche Eigenschaften und Methoden zur Verfügung.
6.2.1 Eigenschaften von DateTime 

Now, Today
Die Struktur DateTime hat zwei statische Eigenschaften, die ohne Erzeugung eines Objekts zur Verfügung stehen. Dies sind Now (Heutiges Datum und jetzige Uhrzeit) und Today (Heutiges Datum).
Ein Objekt der Struktur DateTime kann bei der Erzeugung auf verschiedene Arten einen Startwert erhalten. Die nützlichsten Konstruktoren benötigen:
- keinen Parameter
- Jahr, Monat und Tag als Parameter
- Jahr, Monat, Tag, Stunde, Minute und Sekunde als Parameter
Objekte der Struktur DateTime bieten anschließend eine Reihe von Eigenschaften, die die Informationen aus Tabelle 6.1 bereithalten.
Eigenschaft | Erläuterung |
Day |
Tag des Monats |
DayOfWeek |
Tag der Woche (Wochentag) Sonntag = 0, Montag = 1, usw. |
DayOfYear |
Tag des Jahres |
Hour |
Stunde |
Millisecond |
Millisekunde |
Minute |
Minute |
Month |
Monat |
Second |
Sekunde |
TimeOfDay |
Uhrzeit |
Year |
Jahr |
Datumsteile
Die Eigenschaften Year, Month, Day usw. liefern die jeweiligen Bestandteile des Datums als ganze Zahlen. Daraus lassen sich bei Bedarf verschiedene Formatierungen zusammensetzen.
Es folgt ein erstes Programm, in dem verschiedene Objekte erzeugt und mit einigen Eigenschaften ausgegeben werden (Projekt DatumUhrzeit), siehe Abbildung 6.12.
Abbildung 6.12 Objekte zu Datum und Zeit
Der Programmcode:
Public Class Form1 Private Sub cmdAnzeigen_Click(...) Handles ... Dim d1 As New DateTime( 2009, 11, 17, 16, 35, 12) Dim d2 As New DateTime(2009, 12, 1) Dim d3, d4 As New DateTime lstA.Items.Add("d1: " & d1) lstA.Items.Add("d2: " & d2) d3 = DateTime.Now d4 = DateTime.Today lstA.Items.Add("d3: " & d3) lstA.Items.Add("d4: " & d4) lstA.Items.Add( "Tag der Woche: " & d1.DayOfWeek) If d1.DayOfWeek = DayOfWeek.Sunday Then lstA.Items.Add("Sonntag") Else lstA.Items.Add("Kein Sonntag") End If lstA.Items.Add( "Tag des Jahres: " & d1.DayOfYear) lstA.Items.Add("Datum: " & d1.Date) lstA.Items.Add( "Uhrzeit: " & d1.TimeOfDay.ToString()) End Sub End Class
Listing 6.12 Projekt »DatumUhrzeit«
Zur Erläuterung:
- Das Objekt d1 wird mit Datum und Uhrzeit erzeugt.
- Das Objekt d2 wird nur mit Datum erzeugt, die Uhrzeit ist 00:00 Uhr.
- Die Objekte d3 und d4 werden ohne Werte erzeugt, sie erhalten ihre Werte später.
- Das Objekt d3 bekommt den Wert der statischen Eigenschaft Now, also aktuelles Datum und aktuelle Uhrzeit.
- Das Objekt d4 bekommt den Wert der statischen Eigenschaft Today, also das aktuelle Datum.
DayOfWeek
- Die Eigenschaft DayOfWeek des Objekts d1 liefert den Wochentag, beginnend mit Sonntag = 0. Der Wert wird anschließend mit einem Wert aus der Enumeration DayOfWeek verglichen.
DayOfYear
- Die Eigenschaft DayOfYear des Objekts d1 liefert den Tag des Jahres, von 1 bis 365 bzw. 366.
- Die Eigenschaft Date des Objekts d1 liefert nur das Datum.
TimeOfDay
- Die Eigenschaft TimeOfDay des Objekts d1 liefert nur die Uhrzeit. Diese ist ein Objekt der Klasse TimeSpan und muss daher vor der Verkettung mit einem String mithilfe der Methode ToString() umgewandelt werden.
6.2.2 Rechnen mit Datum und Uhrzeit 

Add-Methoden
Eine ganze Reihe von Methoden dienen zum Rechnen mit Datum und Uhrzeit. Sie beginnen alle mit der Vorsilbe Add: AddHours(), AddMilliseconds(), AddMinutes(), AddMonths(), AddSeconds(), AddYears() usw. Diese Methoden erhalten Double-Werte als Parameter zur Addition oder Subtraktion zur jeweiligen Komponente (Stunde, Minute, ...). Die Parameterwerte können
- ganzzahlig sein oder über Nachkommastellen verfügen,
- positiv oder negativ sein,
- größer als die Maximalwerte der jeweiligen Komponente sein (30 Stunden, 130 Minuten usw.).
TimeSpan
Eine Besonderheit stellen die Methoden Add() und Subtract() dar: Sie erhalten als Parameter ein Objekt der Struktur TimeSpan. Diese Objekte beinhalten Zeitintervalle und eignen sich besonders zum Rechnen mit Datum und Uhrzeit.
Zeitintervall
Ein Objekt der Struktur TimeSpan kann bei der Erzeugung auf verschiedene Arten einen Startwert bekommen. Die nützlichsten Konstruktoren benötigen als Parameter:
- Stunde, Minute und Sekunde
- Tag, Stunde, Minute und Sekunde
Im folgenden Programm (Projekt DatumUhrzeitRechnen) wird ein Objekt der Struktur DateTime initialisiert und anschließend mithilfe von Objekten der Klasse TimeSpan mehrfach verändert, siehe Abbildung 6.13.
Abbildung 6.13 Rechnen mit Datum und Uhrzeit
Der zugehörige Code:
Public Class Form1 Private Sub cmdA_Click(...) Handles ... Dim d As New DateTime( 2009, 11, 17, 16, 35, 12) Dim ts1 As New TimeSpan(2, 10, 5) Dim ts2 As New TimeSpan(3, 4, 70, 10) lstA.Items.Add("Start: " & d) d = d.AddHours(3) lstA.Items.Add("+3 Std: " & d) d = d.AddHours(-2.5) lstA.Items.Add("-2,5 Std: " & d) d = d.AddHours(34) lstA.Items.Add("+34 Std: " & d) d = d.AddSeconds(90) lstA.Items.Add("+90 Sek: " & d) d = d.Add(ts1) lstA.Items.Add("+2 Std 10 Min 5 Sek: " & d) d = d.Subtract(ts2) lstA.Items.Add( "-3 Tage 4 Std 70 Min 10 Sek: " & d) End Sub End Class
Listing 6.13 Projekt »DatumUhrzeitRechnen«
Zur Erläuterung:
- Es wird ein Objekt der Struktur DateTime erzeugt. Es hat den Wert 17.11.2009; 16:35:12 Uhr.
- Für eine spätere Verwendung werden zwei Objekte der Struktur TimeSpan erzeugt. Dabei müssen ganze Zahlen (positiv oder negativ) genutzt werden. Sie dürfen allerdings die Zahlenbereiche der Komponenten überschreiten.
- Das erste Objekt der Struktur TimeSpan beinhaltet ein positives Zeitintervall von 2 Stunden, 10 Minuten und 5 Sekunden.
- Das zweite Objekt der Struktur TimeSpan beinhaltet ein Zeitintervall von 3 Tagen, 4 Stunden, 70 Minuten (!) und 10 Sekunden.
AddHours()
- Mit der Methode AddHours() werden 3 Stunden hinzuaddiert. Die Add-Methoden verändern nicht das Objekt selber, sondern liefern ein verändertes Objekt zurück. Soll dieses veränderte Objekt erhalten bleiben, so muss es gespeichert werden, daher die Zuweisung d = d.AddHours(3). Aus 16:35:12 Uhr wird 19:35:12 Uhr.
- Mit AddHours(-2,5) werden 2,5 Stunden abgezogen. Sie können mit negativen Werten und Nachkommastellen arbeiten. Die Nachkommastellen bei den Stunden werden in die entsprechenden Minuten umgerechnet. Aus 19:35:12 Uhr wird 17:05:12 Uhr.
- Mit AddHours(34) wird mehr als ein Tag hinzuaddiert. Dabei wird auch über Tagesgrenzen hinaus richtig gerechnet. Aus dem 17.11.2009; 17:05:12 Uhr wird der 19.11.2009; 03:05:12 Uhr.
AddSeconds()
- Mit AddSeconds(90) wird mehr als eine Minute hinzuaddiert. Dabei wird auch über Minuten- oder Stundengrenzen hinaus richtig gerechnet. Aus 03:05:12 Uhr wird 03:06:42 Uhr.
- Das erste Zeitintervall (2 Stunden, 10 Minuten und 5 Sekunden) wird mithilfe der Methode Add() hinzuaddiert. Dabei finden mehrere Umrechnungen statt. Aus 03:06:42 Uhr wird 05:16:47 Uhr.
Subtract()
- Das zweite Zeitintervall (3 Tage, 4 Stunden, 70 Minuten und 10 Sekunden) wird mithilfe der Methode Subtract() abgezogen. Aus dem 19.11.2009; 05:16:47 Uhr wird der 16.11.2009; 00:06:37 Uhr.