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.5 Die Klasse »TimeSpan«Zur nächsten Überschrift

Aus den Methoden zur Manipulation einer DateTime-Instanz ragt eine heraus, deren Parametertyp sich von denen der anderen, gleichartigen Methoden unterscheidet. Es ist die Methode Add, deren Definition wir uns anschauen wollen:

public DateTime Add(TimeSpan);

Dem Parameter wird ein Objekt vom Typ TimeSpan übergeben. Dieser Typ scheint nur auf den ersten Blick dem Typ DateTime zu ähneln, aber beide unterscheiden sich grundlegend: Mit DateTime wird ein Datum beschrieben, mit TimeSpan eine Zeitspanne. Dies machen auch die Konstruktoren der TimeSpan-Klasse deutlich, die Tage, Stunden, Minuten usw. entgegennehmen.

Der folgende Beispielcode zeigt, wie eine Referenz auf eine TimeSpan-Instanz an die Methode Add übergeben wird:

DateTime now = new DateTime(2002, 2, 3, 12, 0, 0);
TimeSpan span = new TimeSpan(3, 12, 15);
now = now.Add(span);
Console.WriteLine(now);

Listing 16.28 Zeitspanne für Rechenoperation mit »DateTime« angeben

In der ersten Codezeile wird die Klasse DateTime instanziiert und dem Konstruktor das Datum 3. Februar 2002, 12:00 Uhr übergeben. In der folgenden Anweisung erzeugen wir das TimeSpan-Objekt span. Der Konstruktor mit drei Parametern übernimmt als Argumente Stunden, Minuten und Sekunden – er beschreibt demnach eine Zeitspanne von drei Stunden, zwölf Minuten, 15 Sekunden. Der Add-Methode wird danach das TimeSpan-Objekt übergeben, mit dem Datum und Zeit neu bestimmt werden.

Eine Reihe vordefinierter Konstanten erleichtert die Umrechnung von Zeiteinheiten in Ticks, wenn unterschiedliche Zeitangaben mit Hilfe eines Faktors auf eine gemeinsame Einheitsbasis gebracht werden müssen – diese Basis bilden bekanntlich die Ticks. So beschreibt die Konstante TicksPerDay beispielsweise die Anzahl der Ticks pro Tag, und TicksPerHour gibt die Ticks pro Stunde an.

Das folgende Beispielprogramm zeigt, wie diese Konstanten sinnvoll eingesetzt werden können. Die benutzerdefinierten Funktionen DiffHours und DiffSeconds nehmen jeweils eine Referenz vom Typ DateTime entgegen und berechnen den Unterschied zwischen zwei Datumswerten in Stunden bzw. Sekunden. Dabei ist der erste Datumswert das aktuelle Systemdatum, das wie üblich über Now ermittelt wird, und den zweiten Datumswert muss der Anwender an der Konsole eingeben.

// Beispiel: ..\Kapitel 16\Zeitdifferenz
class Program {
static void Main(string[] args) {

// aktuelle Systemzeit ermitteln
DateTime actDate = DateTime.Now;
// das zu vergleichende Datum eingeben
Console.Write("Geben Sie das Vergleichsdatum ");
Console.Write("im Format tt.mm.jjjj ein: ");
string strDate = Convert.ToString(Console.ReadLine());
// die Eingabe passend formatieren
strDate = strDate.Replace('.', '/');
DateTime newDate = Convert.ToDateTime(strDate);
// Ausgabe der Differenz in Stunden
Console.Write("Die Differenz in Stunden: ");
Console.WriteLine(DiffHours(actDate, newDate));
// Ausgabe der Differenz in Sekunden
Console.Write("Die Differenz in Sekunden: ");
Console.WriteLine(DiffSeconds(actDate, newDate));
Console.ReadLine();
}
public static long DiffHours(DateTime d1,DateTime d2) {
long x = d2.Ticks - d1.Ticks;
return Convert.ToInt64(x / TimeSpan.TicksPerHour);
}
public static long DiffSeconds(DateTime d1,DateTime d2) {
long x = d2.Ticks - d1.Ticks;
return Convert.ToInt64(x / TimeSpan.TicksPerSecond);
}
}

Listing 16.29 Das Beispielprogramm »Zeitdifferenz«

Der Algorithmus des Programmcodes in den beiden Methoden DiffHours und DiffSeconds ist ähnlich. Beide Routinen nehmen in ihren Parametern Referenzen des Typs DateTime entgegen und rechnen das jeweilige Datum mit der Eigenschaft Ticks zunächst in die Basiseinheit um, um im Anschluss daran die Differenz zu bilden. Die abschließende Division durch TicksPerHour bzw. TicksPerSecond liefert einen long, der dem Aufrufer zurückgegeben wird.

Weitere Möglichkeiten der Klasse »TimeSpan«

Eine TimeSpan-Instanz beschreibt eine Zeitspanne aus Tagen, Stunden, Minuten, Sekunden und Millisekunden. Diese Zeitspanne lässt sich in einem String abbilden, der dem folgenden Format entspricht:

Tag.Stunden:Minuten:Sekunden.Sekundenbruchteil

Dazu ein Beispiel. Mit

TimeSpan span = new TimeSpan(2, 12, 30, 22, 100);
Console.WriteLine(span.ToString());

erhalten Sie die folgende Ausgabe:

2.12:30:22.1000000

Manchmal ist es notwendig, die Angabe einer Zeitspanne in eine konkrete Zeiteinheit umzurechnen oder aus der Angabe einer Zahl, die eine Zeiteinheit widerspiegelt, ein TimeSpan-Objekt zu erzeugen. Auch dazu liefert die Klasse TimeSpan die passenden Methoden. Nehmen wir an, Sie wollten das mit

TimeSpan span = new TimeSpan(1, 35, 45);

erzeugte Objekt, das einen Tag, 35 Minuten und 45 Sekunden beschreibt, in eine Zahl umwandeln. Es stellt sich mit den Möglichkeiten der Klasse nur noch die Frage, ob Sie eine Ganzzahl oder eine Dezimalzahl benötigen. Für beide Fälle gibt es die passenden Eigenschaften. Beispielsweise liefert:

  • die Hours-Eigenschaft einen int und
  • die TotalHours-Eigenschaft einen double.

Die Anweisung

Console.WriteLine(span.TotalHours);

wird das Ergebnis 1,5958333333333 haben. Beim Aufruf von Hours wird der Dezimalteil abgeschnitten. Analog lautende Eigenschaften gibt es auch, um mit Tagen, Minuten oder Sekunden zu operieren.

Einige statische Methoden des Typs TimeSpan ermöglichen es auch ohne Initialisierung, einer TimeSpan-Variablen einen Wert zuzuweisen. Diese Methoden beginnen mit dem Präfix From, beispielsweise FromSeconds, FromMinutes, FromDays.

// Zeitspanne von 3 Stunden
TimeSpan ts = TimeSpan.FromHours(3);


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