Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort zur 6. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Das Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Strukturen und Enumerationen
7 Fehlerbehandlung und Debugging
8 Auflistungsklassen (Collections)
9 Generics – Generische Datentypen
10 Weitere C#-Sprachfeatures
11 LINQ
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 XML
15 Multithreading und die Task Parallel Library (TPL)
16 Einige wichtige .NET-Klassen
17 Projektmanagement und Visual Studio 2012
18 Einführung in die WPF und XAML
19 WPF-Layout-Container
20 Fenster in der WPF
21 WPF-Steuerelemente
22 Elementbindungen
23 Konzepte von WPF
24 Datenbindung
25 Weitere Möglichkeiten der Datenbindung
26 Dependency Properties
27 Ereignisse in der WPF
28 WPF-Commands
29 Benutzerdefinierte Controls
30 2D-Grafik
31 ADO.NET – Verbindungsorientierte Objekte
32 ADO.NET – Das Command-Objekt
33 ADO.NET – Der SqlDataAdapter
34 ADO.NET – Daten im lokalen Speicher
35 ADO.NET – Aktualisieren der Datenbank
36 Stark typisierte DataSets
37 Einführung in das ADO.NET Entity Framework
38 Datenabfragen des Entity Data Models (EDM)
39 Entitätsaktualisierung und Zustandsverwaltung
40 Konflikte behandeln
41 Plain Old CLR Objects (POCOs)
Stichwort

Download:
- Beispiele, ca. 62,4 MB

Jetzt Buch bestellen
Ihre Meinung?

Spacer
Visual C# 2012 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2012

Visual C# 2012
Rheinwerk Computing
1402 S., 6., aktualisierte und erweiterte Auflage 2013, geb., mit DVD
49,90 Euro, ISBN 978-3-8362-1997-6
Pfeil 16 Einige wichtige .NET-Klassen
Pfeil 16.1 Die Klasse »Object«
Pfeil 16.1.1 Referenzvergleiche mit »Equals« und »ReferenceEquals«
Pfeil 16.1.2 »ToString« und »GetType«
Pfeil 16.1.3 Die Methode »MemberwiseClone« und das Problem des Klonens
Pfeil 16.2 Die Klasse »String«
Pfeil 16.2.1 Das Erzeugen eines Strings
Pfeil 16.2.2 Die Eigenschaften von »String«
Pfeil 16.2.3 Die Methoden der Klasse »String«
Pfeil 16.2.4 Zusammenfassung der Klasse »String«
Pfeil 16.3 Die Klasse »StringBuilder«
Pfeil 16.3.1 Allgemeines
Pfeil 16.3.2 Die Kapazität eines »StringBuilder«-Objekts
Pfeil 16.3.3 Die Konstruktoren der Klasse »StringBuilder«
Pfeil 16.3.4 Die Eigenschaften der Klasse »StringBuilder«
Pfeil 16.3.5 Die Methoden der Klasse »StringBuilder«
Pfeil 16.3.6 Allgemeine Anmerkungen
Pfeil 16.4 Der Typ »DateTime«
Pfeil 16.4.1 Die Zeitspanne »Tick«
Pfeil 16.4.2 Die Konstruktoren von »DateTime«
Pfeil 16.4.3 Die Eigenschaften von »DateTime«
Pfeil 16.4.4 Die Methoden der Klasse »DateTime«
Pfeil 16.5 Die Klasse »TimeSpan«
Pfeil 16.6 Ausgabeformatierung
Pfeil 16.6.1 Formatierung mit der Methode »String.Format«
Pfeil 16.6.2 Formatierung mit der Methode »ToString«
Pfeil 16.6.3 Benutzerdefinierte Formatierung

Rheinwerk Computing - Zum Seitenanfang

16.4 Der Typ »DateTime«Zur nächsten Überschrift

Um ein Datum einschließlich einer Zeitangabe in einer Variablen zu speichern, deklarieren Sie die Variable vom Typ DateTime, beispielsweise:

DateTime myDate = new DateTime(2003, 12, 6);
Console.WriteLine(myDate);

Die Ausgabe wird lauten:

06.12.2003  00:00:00

Mit einer Variablen des Typs DateTime lässt sich ein Datum zwischen dem 1. Januar 01 und dem 31. Dezember 9999 behandeln – nach dem gregorianischen Kalender, um präzise zu sein.


Rheinwerk Computing - Zum Seitenanfang

16.4.1 Die Zeitspanne »Tick«Zur nächsten ÜberschriftZur vorigen Überschrift

Die Zeitmessung erfolgt in Einheiten von 100 Nanosekunden, die als Tick bezeichnet werden! Diese Aussage muss man sich auf der Zunge zergehen lassen: Die .NET-Zeitmessung beginnt am 1.1.0001 um 0:00 Uhr, und es können Intervalle von 0.0000001 Sekunden (in Worten: ein Zehnmillionstel) unterschieden werden. Die Anzahl der Ticks seit Beginn dieser Zeitrechnung kann in einer long-Variablen gespeichert werden, die damit groß genug ist, alle Intervalle bis zum Ende des Jahres 9999 abdecken zu können.

Wenn Sie das aktuelle Datum und die aktuelle Zeit ausgedrückt in Ticks sehen wollen, dann geben Sie den folgenden Code ein:

Console.WriteLine(DateTime.Now.Ticks);

Zuerst rufen Sie die statische Methode Now auf, die das aktuelle Systemdatum einschließlich der Zeit als DateTime zurückliefert. Darauf wird die Eigenschaft Ticks angewendet, die Ihnen eine kaum noch fehlerfrei abschreibbare Zahl liefert.

Umgekehrt können Sie natürlich auch aus einem long, der als Tick interpretiert werden soll, das Datum und die Zeit ermitteln. Dazu wird die Klasse DateTime instanziiert und dabei ein Konstruktor aufgerufen, der einen long erwartet, der als die Anzahl der Ticks seit Beginn der .NET-Zeitrechnung interpretiert wird.

DateTime actualDate = new DateTime(631452984963219664);
Console.WriteLine(actualDate.ToString());

Die Ausgabe lautet:

30.12.2001 08:41:36

Sie haben jetzt einen ersten Eindruck vom Umgang mit Datum und Uhrzeit gewonnen. Wir wollen uns nun die Details der Klasse DateTime ansehen.


Rheinwerk Computing - Zum Seitenanfang

16.4.2 Die Konstruktoren von »DateTime«Zur nächsten ÜberschriftZur vorigen Überschrift

Wenn Ihnen die Anzahl der Ticks vorliegt, genügt der einparametrige Konstruktor, um ein Objekt zu erzeugen:

public DateTime(long ticks);

Da in den meisten Fällen vermutlich kaum die Anzahl der Tick-Intervalle bekannt sein dürfte, kommt diesem Konstruktor relativ geringe Bedeutung zu.

Wollen Sie mit einem bestimmten Datum operieren, bei dem die Uhrzeit keine Rolle spielt, bietet sich der folgende Konstruktor an:

public DateTime (int year, int month, int day);

Den Parametern wird das Jahr, der Monat und der Tag jeweils als int übergeben. Dabei ist die Jahresangabe auf die Zahlen zwischen einschließlich 1 und 9999 begrenzt, die Monatsangabe natürlich auf 1 bis 12, und die Anzahl der Tage hängt vom Kalendermonat ab. Da bei diesem Konstruktor auf die Zeitangabe verzichtet wird, bezieht sich das Datum immer auf Mitternacht, also exakt 0:00 Uhr.

Im folgenden Listing setzen wir diesen Konstruktor ein, um das Datum 12. Mai 1965 abzubilden, und lassen uns an der Konsole die Ticks ausgeben, die dieser Angabe entsprechen:

DateTime date = new DateTime(1965, 5, 12);
Console.WriteLine("Datum: {0}", date);
Console.WriteLine("Ticks: {0}", date.Ticks);

Listing 16.24 Abbildung des Datums 12. Mai 1965

Für eine weitere Präzisierung durch eine zusätzliche Zeitangabe stehen zwei Konstruktoren zur Verfügung. Während der erste zusätzlich zu der Angabe des Datums in drei weiteren Parametern Stunde, Minute und Sekunde entgegennimmt, kann dem anderen in einem siebten Parameter die Anzahl der Millisekunden übergeben werden:

public DateTime (int year, int month, int day, int h, int min, int sec);
public DateTime (int year, int month, int day, int h, int min, int sec, int msec);

Für jeden dieser Konstruktoren gibt es noch eine weitere Überladung, die um eine Referenz vom Typ System.Globalization.Calendar ergänzt ist. Damit kann man gegebenenfalls das Kalenderformat vom gregorianischen Kalender auf einen anderen umschalten.

Mit DateTime können Sie auch festlegen, auf welcher Basis die Zeitangabe erfolgt. Dazu gibt es drei Möglichkeiten:

  • Die Zeitangabe bezieht sich auf die lokale Systemzeit.
  • Die Zeitangabe legt die koordinierte Weltzeit (UTC) zugrunde.
  • Die Zeitangabe ist nicht genau spezifiziert.

Die Festlegung muss bereits bei der Instanziierung erfolgen. Dazu stehen einige Konstruktoren zur Verfügung, denen ein Argument vom Typ DateTimeKind übergeben wird. Bei DateTimeKind handelt es sich um eine Enumeration mit den Elementen Local, Unspecified und Utc. Der Standard ist Unspecified.

public DateTime (long ticks, DateTimeKind kind);

Liegt ein DateTime-Objekt vor, lässt sich die Zeitbasis nicht mehr verändern. Sie können die Einstellung jedoch mit der Eigenschaft Kind jederzeit auswerten.


Rheinwerk Computing - Zum Seitenanfang

16.4.3 Die Eigenschaften von »DateTime«Zur nächsten ÜberschriftZur vorigen Überschrift

Liegt ein gültiges Datum vor, lassen sich daraus vom Jahr bis hin zu den Millisekunden sämtliche Informationen extrahieren. Die Namen der Eigenschaften sind sehr einprägsam: Year, Month, Day, Hour, Minute, Second und Millisecond.

Nehmen wir an, wir wollen das aktuelle Systemdatum, das wir mit der Eigenschaft Now ermitteln können, in seine Detailinformationen zerlegen, könnte das wie nachfolgend gezeigt erfolgen:

DateTime newDate = DateTime.Now;
Console.WriteLine("Jahr = {0}", newDate.Year);
Console.WriteLine("Monat = {0}", newDate.Month);
Console.Write("Tag = {0}", newDate.Day);
Console.WriteLine(" ({0})", newDate.DayOfWeek.ToString());
Console.WriteLine("Stunde = {0}", newDate.Hour);
Console.WriteLine("Minute = {0}", newDate.Minute);
Console.WriteLine("Sekunde = {0}", newDate.Second);
Console.WriteLine("MilliSek. = {0}", newDate.Millisecond);

Listing 16.25 Datum- und Zeitanteile aus »DateTime.Now« extrahieren

Weil die Ausgabe der Eigenschaft Day nur das aktuelle Tagesdatum liefert, ohne den Wochentag anzugeben, bietet sich eine weitere Eigenschaft von DateTime an, die aus einem gegebenen Datum sogar den Wochentag ermittelt: DayOfWeek. Der Rückgabewert ist vom Typ DayOfWeek, einer Enumeration des System-Namespaces, die für den Sonntag 0 festlegt, für Montag 1 usw. Mit dem Aufruf von ToString auf DayOfWeek erhalten wir die Zeichenfolge, die der Konstanten entspricht.

Bedauerlich ist, dass es keine gleichwertige Auflistung für die Monate gibt. Wenn Sie daher auch den Monatsnamen in der Ausgabe als Text und nicht nur als Zahl lesen wollen, müssen Sie die Zahlen 1–12 selbst den Monatsnamen zuordnen, beispielsweise mit Hilfe eines switch-Statements.

Now liefert die aktuelle Systemzeit und hängt damit unter Windows-Plattformen von der Einstellung in der Systemsteuerung ab. Eine sehr ähnliche Eigenschaft ist UtcNow, die aus den Einstellungen in der Systemsteuerung die Greenwich Mean Time (GMT) ermittelt.

Wenn auf die Zeitangabe, die uns Now liefert, verzichtet werden kann oder muss, können Sie auch auf die statische Eigenschaft Today zurückgreifen, die das Datum ohne Zeitangabe liefert. Diese wird auf 00:00:00 gesetzt.


Rheinwerk Computing - Zum Seitenanfang

16.4.4 Die Methoden der Klasse »DateTime«Zur nächsten ÜberschriftZur vorigen Überschrift

Nahezu alle Methoden lassen sich in zwei operativen Gruppen zusammenfassen:

  • Methoden, die der Ausgabeformatierung dienen
  • die Gruppe der Add-Methoden, mit der zu einem gegebenen Datum eine Zeitspanne addiert oder subtrahiert werden kann

Methoden zum Extrahieren von Datum und Zeit

Mit insgesamt vier vordefinierten Methoden lässt sich die Textausgabe eines DateTime-Objekts verändern:

  • ToLongDateString und ToShortDateString
  • ToLongTimeString und ToShortTimeString

Wir können den Effekt dieser Methoden am besten anhand von Beispielen sehen. Dazu deklarieren wir eine Variable vom Typ DateTime und führen darauf alle vier Methoden aus:

// Datum = 3. Februar 2006 5:25:30
DateTime date = new DateTime(2006, 2, 3, 5, 25, 30);
// Ausgabe: Mittwoch, 3. Februar 2006
Console.WriteLine(date.ToLongDateString());
// Ausgabe: 03.02.2006
Console.WriteLine(date.ToShortDateString());
// Ausgabe: 05:25:30
Console.WriteLine(date.ToLongTimeString());
// Ausgabe: 05:25
Console.WriteLine(date.ToShortTimeString());

Listing 16.26 Mehrere Ausgabemöglichkeiten von Datum und Zeit

Die Methode »ToFileTime«

Weitaus interessanter als diese Formatmethoden ist eine andere, die ihre Leistungsfähigkeit erst auf den zweiten Blick offenbart: ToFileTime.

public long ToFileTime();

Der Rückgabewert vom Typ long enthält die Anzahl der Ticks seit dem 1. Januar 1601, 12 Uhr. Welchen Hintergrund diese scheinbar zufällige Jahreszahl hat, verrät uns die Dokumentation nicht. Das soll uns aber auch nicht weiter interessieren, viel wichtiger ist die Tatsache, mit dieser Methode ein Mittel in den Händen zu halten, das es uns ermöglicht, die Zeitspanne zwischen zwei Ereignissen zu messen – und dafür brauchen wir einen präzise definierten, gleichermaßen gültigen Ursprung, egal wie er definiert ist.

Rechenoperationen mit »DateTime«-Objekten

Die Add-Methoden decken alle Bedürfnisse hinsichtlich der Änderung eines Datums oder einer Zeit ab. Aus dem Bezeichner ist sofort zu erkennen, welche Einheit zu einem DateTime-Objekt addiert werden soll:

  • AddDays
  • AddHours
  • AddMonths usw.

Allen Methoden wird ein Wert vom Typ int bzw. double übergeben, und der Rückgabewert ist vom Typ DateTime, z. B.:

public DateTime AddSeconds(double);

Im folgenden Listing wird ein DateTime-Objekt erzeugt, das das Datum 2. August 1995 und die Zeit 23:00 Uhr beschreibt. Davon werden mit der Methode AddHours 30 Stunden subtrahiert:

DateTime now = new DateTime(1995, 8, 2, 23, 0, 0);
now = now.AddHours(-30);
Console.WriteLine(now);

Listing 16.27 Rechenoperationen mit »DateTime«

An der Konsole wird

01.08.1995 17:00:00

ausgegeben, was beweist, dass die Methode automatisch auch ein neues Datum berücksichtigt, das aus der Addition resultiert.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Visual C# 2012

Visual C# 2012
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Rheinwerk-Shop: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: C++ Handbuch






 C++ Handbuch


Zum Rheinwerk-Shop: C/C++






 C/C++


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern