Datum und Zeit

Mit Datum und Zeit arbeiten

Description: In diesem Video lernt Ihr, wie man in C# mit Datum und Zeit arbeitet und wie man neue Instanzen von DateTime bzw. TimeSpan erstellt.

Duration: PT16M24S

ContentUrl: http://video.ch9.ms/ch9/5211/791498a8-50d7-4904-aa4f-26e1905c5211/CFundamentalsForAbsoluteBeginnersM14_mid.mp4

EmbedUrl: https://channel9.msdn.com/Series/C-Fundamentals-for-Absolute-Beginners/14/player

UploadDate: 2016-10-12T15:23:00.0000000Z

Thumbnail

Inhaltszusammenfassung

Diesmal geht es um Zeit und Datum. In dieser Übung bringen wir dir das Arbeiten und Rechnen mit Datum und Zeit näher und erläutern Methoden anhand von kleinen Beispielen.

Durchführung

Erstelle ein neues Konsolenanwendungsprogramm, in dem wir später die Zeiten und das Datum ausgeben werden. Fangen wir mit der Initialisierung eines DateTime-Objektes an. Anfangs verwenden wir das aktuelle Datum mit der Uhrzeit als Wert für das DateTime-Objekt. Dieses kann man mit DateTime.Now ermitteln. Bei der Ausgabe des DateTimes auf die Konsole, ruft man die Methode ToString() auf. Diese Methode erkennt, aus welchem Land man ist und gibt dementsprechend das Datum und die Zeit aus. In Amerika wäre zum Beispiel die Zeit mit AM und PM angegeben und beim Datum wären Tag und Monat vertauscht.

DateTime myValue = DateTime.Now;
Console.WriteLine(myValue.ToString());

Bei der ToString Methode werden sowohl die Zeit als auch das Datum ausgegeben. Falls man nur die Zeit oder nur das Datum ausgeben möchte, verwendet man die Methoden ToShort------String() und ToLong-----String(), wobei ----- entweder Date oder Time sein kann. Schreibe folgenden Code in dein Programm und sieh selbst was das Ergebnis ist:

Console.WriteLine(myValue.ToShortDateString());
Console.WriteLine(myValue.ToShortTimeString());

Console.WriteLine(myValue.ToLongDateString());
Console.WriteLine(myValue.ToLongTimeString());

Zum Rechnen mit den DateTime-Objekten gibt es die Add-Methode. Zum Beispiel AddDays, AddMonths, AddHours, und so weiter. Eine Methode zum Subtrahieren von Stunden und Tagen gibt es nicht. Anstatt minus zu rechnen benutzt man die Add-Methode mit negativen Werten, was zu dem gewünschten Ergebnis führt.

Console.WriteLine(myValue.AddDays(3).ToLongDateString());
Console.WriteLine(myValue.AddHours(3).ToLongTimeString());

Console.WriteLine(myValue.AddDays(-3).ToLongDateString());

Wie man im obigen Code erkennen kann, wurde nach einem Methodenaufruf noch eine Methode direkt danach aufgerufen. Aber warum geht das? Ganz einfach. Die Add-Methode gibt als Ergebnis ein neues DateTime-Objekt zurück und da wir wieder ein solches Objekt besitzen, können wir deren Methoden wieder benutzen. Nun wieder zurück zu der Ausgabe von DateTimes. Bisher wurde erklärt wie man nur die Zeit oder das Datum oder beides ausgibt, aber noch nicht wie man nur z.B. den Monat ausgibt. Zur Ausgabe eines bestimmten Wertes (Monat, Jahr, Sekunde, ...) ruft man die entsprechende Variable vom DateTime auf:

Console.WriteLine(myValue.Month);

Erstellen wir nun eine neue DateTime Variable, nur diesmal nicht vom aktuellen Zeitpunkt, sondern benutzerdefiniert. Dazu erstellen wir eine neue DateTime Variable und bei der Wertzuweisung erstellen wir ein neues DateTime Objekt mit unseren Parametern (Jahr, Monat, Tag).

DateTime myBirthday = new DateTime(1969, 12, 7);
Console.WriteLine(myBirthday.ToShortDateString());

Eine Alternative zur Erstellung eines neuen DateTime mit Ganzzahl Parametern wäre durch Strings. Hierbei ist zu beachten, dass dies wiederum von den Landeseinstellungen abhängig ist. Würde man den String "12/7/1969" verwenden, würde es in Amerika der 7.Dezember sein, während es in Europa der 12.Juli wäre.

DateTime myBirthday2 = DateTime.Parse("12/7/1969");

Mit zwei DateTime Objekten ist es auch möglich eine Zeitspanne zu berechnen. Dies erfolgt über das Subtrahieren zwischen zwei DateTime Objekten. Das Ergebnis davon ist ein TimeSpan Objekt. Dies hat die Variablen für z.B. die ganze Zeitspanne in Stunden, in Tagen, ...

TimeSpan myAge = DateTime.Now.Subtract(myBirthday2);
Console.WriteLine(myAge.TotalDays);

Vollständiger Programmcode

class Program
{
static void Main(string[] args)
{
DateTime myValue = DateTime.Now;
Console.WriteLine(myValue.ToString());

Console.WriteLine(myValue.ToShortDateString());
Console.WriteLine(myValue.ToShortTimeString());

Console.WriteLine(myValue.ToLongDateString());
Console.WriteLine(myValue.ToLongTimeString());

Console.WriteLine(myValue.AddDays(3).ToLongDateString());
Console.WriteLine(myValue.AddHours(3).ToLongTimeString());

Console.WriteLine(myValue.AddDays(-3).ToLongDateString());

Console.WriteLine(myValue.Month);

DateTime myBirthday = new DateTime(1969, 12, 7);
Console.WriteLine(myBirthday.ToShortDateString());

DateTime myBirthday2 = DateTime.Parse("12/7/1969");
TimeSpan myAge = DateTime.Now.Subtract(myBirthday2);
Console.WriteLine(myAge.TotalDays);

Console.ReadLine();
}
}