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

Inhaltsverzeichnis
1 Einführung
2 Grundlagen der Sprachsyntax
3 Klassendesign
4 Weitere Datentypen
5 Multithreading
6 Collections und LINQ
7 Eingabe und Ausgabe
8 Anwendungen: Struktur und Installation
9 Code erstellen und debuggen
10 Einige Basisklassen
11 Windows-Anwendungen erstellen
12 Die wichtigsten Steuerelemente
13 Tastatur- und Mausereignisse
14 MDI-Anwendungen
15 Grafiken mit GDI+
16 Drucken
17 Entwickeln von Steuerelementen
18 Programmiertechniken
19 WPF – Grundlagen
20 Layoutcontainer
21 WPF-Steuerelemente
22 Konzepte von WPF
23 Datenbankverbindung mit ADO.NET
24 Datenbankabfragen mit ADO.NET
25 DataAdapter
26 Offline mit DataSet
27 Datenbanken aktualisieren
28 Stark typisierte DataSets
A Anhang: Einige Übersichten
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual Basic 2008 von Andreas Kuehnel, Stephan Leibbrandt
Das umfassende Handbuch
Buch: Visual Basic 2008

Visual Basic 2008
3., aktualisierte und erweiterte Auflage, geb., mit DVD
1.323 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1171-0
Pfeil 10 Einige Basisklassen
Pfeil 10.1 Object
Pfeil 10.1.1 Methoden
Pfeil 10.1.2 GetType
Pfeil 10.1.3 Gleichheit
Pfeil 10.1.4 Objekte kopieren
Pfeil 10.2 String
Pfeil 10.2.1 Erzeugung
Pfeil 10.2.2 Eigenschaften
Pfeil 10.2.3 Methoden
Pfeil 10.3 Ausgabeformatierung
Pfeil 10.3.1 Formatierung mit der Methode String.Format
Pfeil 10.3.2 Formatierung mit ToString
Pfeil 10.3.3 Benutzerdefinierte Formatierung
Pfeil 10.4 StringBuilder
Pfeil 10.4.1 Kapazität
Pfeil 10.4.2 Konstruktoren
Pfeil 10.4.3 Eigenschaften
Pfeil 10.4.4 Methoden
Pfeil 10.5 Zeitmessung
Pfeil 10.5.1 Die Zeitspanne Tick
Pfeil 10.5.2 Konstruktoren von DateTime
Pfeil 10.5.3 Eigenschaften von DateTime
Pfeil 10.5.4 Methoden von DateTime
Pfeil 10.5.5 Zeitspanne: TimeSpan


Rheinwerk Computing - Zum Seitenanfang

10.5 Zeitmessung Zur nächsten ÜberschriftZur vorigen Überschrift

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

Dim datum As New DateTime(2003, 12, 6) 
Console.WriteLine(datum)                  'Ausgabe: 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. Die Grenzen sind in den klassengebundenen schreibgeschützten Feldern MinValue und MaxValue gespeichert.


Rheinwerk Computing - Zum Seitenanfang

10.5.1 Die Zeitspanne Tick Zur nächsten ÜberschriftZur vorigen Überschrift

Die Einheit der Zeitmessung ist 100 Nanosekunden. Sie wird als Tick bezeichnet.

Damit braucht bereits ein Tag eine zwölfstellige Zahl zur Zählung der Ticks. Ein Long ist sehr viel größer, sodass der gesamte Bereich seit Beginn unserer Zeitrechnung bis zum Ende des Jahres 9999 abdeckt werden kann (es könnten sogar knapp 30.000 Jahre sein). Die Ticks definieren einen Zeitpunkt, der dem Konstruktor übergeben werden kann. Im folgenden Codefragment addieren wir die Anzahl der Ticks in einer Sekunde zur aktuellen Tickzahl.

Dim d As DateTime = Now 
Console.WriteLine("{0} ist eine Sekunde vor {1}", _ 
                  d, New DateTime(d.Ticks + TimeSpan.TicksPerSecond))

Die Ausgabe lautet:

30.12.2008 15:14:43 ist eine Sekunde vor 30.12.2008 15:14:44

Rheinwerk Computing - Zum Seitenanfang

10.5.2 Konstruktoren von DateTime Zur nächsten ÜberschriftZur vorigen Überschrift

Ein neuer Zeitpunkt kann entweder durch eine Tickanzahl oder durch Tages- und Zeitangaben definiert werden. Die Enumeration DateTimeKind gibt den Bezug an: unspezifiziert (Unspecified), Weltzeit (Utc) oder lokale Zeit (Local). Vordefinierte Kalender vom Typ System. Globalization.Calendar umfassen auch nah- und fernöstliche Varianten. Sie ordnen den Zeitangaben Wochen, Monate und Jahre zu, was auch die Formatierung beeinflusst. In der folgenden Syntax sind optionale Parameter kursiv gesetzt.


Public Sub New(ticks As Long, kind As DateTimeKind)

Public Sub New(year As Integer, month As Integer, day As Integer, _ 
  calendar As Calendar) 
Public Sub New(year As Integer, month As Integer, day As Integer, _ 
  hour As Integer, minute As Integer, second As Integer, _ 
  millisecond As Integer, calendar As Calendar, kind As DateTimeKind)

Eine fehlende Zeit wird durch Mitternacht ersetzt. Sind die Jahreszahlen nicht zwischen 1 und 9999 oder sind die weiteren Angaben ungültig, wird eine Ausnahme ausgelöst. Die Datumszählung beginnt jeweils bei 1, die Zeitzählung jeweils bei 0.

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 auslesen.


Rheinwerk Computing - Zum Seitenanfang

10.5.3 Eigenschaften von DateTime Zur nächsten ÜberschriftZur vorigen Überschrift

Für jedes Datums- und Zeitelement gibt es eine Eigenschaft: Year, Month, Day, Hour, Minute, Second und Millisecond. Den Wochentag bekommen Sie mit DayOfWeek vom Typ der gleichnamigen Enumeration. Monatsnamen sind nicht vorgesehen und müssen bei Bedarf selbst implementiert werden. Das folgende Codefragment gibt einen Zeitpunkt aus:

Dim d As DateTime = Now 
Console.WriteLine("{0}, {1}.{2}.{3} {4}:{5}:{6},{7}", d.DayOfWeek, _ 
  d.Day, d.Month, d.Year, d.Hour, d.Minute, d.Second, d.Millisecond)

Das Format entspricht deutschen Gepflogenheiten:

Dienstag, 30.12.2008 16:5:19,405

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 eine Zeitangabe verzichtet werden kann, verwenden Sie die klassengebundene Eigenschaft Today, die das Datum ohne Zeitangabe liefert. Diese wird auf 00:00:00 gesetzt.


Rheinwerk Computing - Zum Seitenanfang

10.5.4 Methoden von DateTime Zur nächsten ÜberschriftZur vorigen Überschrift

Nahezu alle Methoden der Klasse lassen sich in zwei Gruppen zusammenfassen:

  • Umwandlungen
  • Add-Methoden, mit denen zu einem Datum eine Zeitspanne addiert oder subtrahiert wird

Umwandlungen

Vier Methoden erlauben eine einfache Ausgabe eines Zeitpunkts:

Dim d As New DateTime(2006, 2, 3, 5, 25, 30)    '3.Februar 2006 5:25:30

Console.WriteLine(d.ToLongDateString())         'Freitag, 3. Februar 2006 
Console.WriteLine(d.ToShortDateString())        '03.02.2006 
Console.WriteLine(d.ToLongTimeString())         '05:25:30 
Console.WriteLine(d.ToShortTimeString())        '05:25

Formatieren Sie die Ausgabe selbst, können der Test IsLeapYear auf ein Schaltjahr und der Test IsDaylightSavingTime auf Sommerzeit nützlich sein.

Ist ein Zeitpunkt als Zeichenkette gegeben, können Sie ihn mit Parse, ParseExact, TryParse und TryParseExact in ein DateTime-Objekt umwandeln.

Rechenoperationen

Eine ganz einfache Operation ist der Vergleich zweier Zeitpunkte. Entweder Sie verwenden Equals, Compare, CompareTo oder Vergleichsoperatoren, zum Beispiel:

Dim d As New DateTime(2006, 2, 3, 5, 25, 30) 
Console.WriteLine("d<Now: {0}", d < Now)

Die einzig sinnvollen Rechenoperationen sind Additionen und Subtraktionen.


Public Function Add(value As TimeSpan) As DateTime 
Public Function AddDays(value As Double) As DateTime 
Public Function AddHours(value As Double) As DateTime 
Public Function AddMilliseconds(value As Double) As DateTime 
Public Function AddMinutes(value As Double) As DateTime 
Public Function AddMonths(months As Integer) As DateTime 
Public Function AddSeconds(value As Double) As DateTime 
Public Function AddTicks(value As Long) As DateTime 
Public Function AddYears(value As Integer) As DateTime 
Public Function Subtract(value As DateTime) As TimeSpan 
Public Function Subtract(value As TimeSpan) As DateTime

Im folgenden Codefragment 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);

Die Ausgabe zeigt, dass ein aus der Addition resultierendes neues Datum automatisch berücksichtigt wird.

01.08.1995 17:00:00

Für Zeitmessungen im eigenen Coding sind oft Sekundenangaben interessant. Der einfachste Weg geht über die Subtraktion der Ticks, zum Beispiel:

Dim t0 As DateTime = Now 
' Rechnungen 
Console.Write("Rechenzeit {0} Sekunden", _ 
             (Now.Ticks – t0.Ticks)/TimeSpan.TicksPerSecond)

Rheinwerk Computing - Zum Seitenanfang

10.5.5 Zeitspanne: TimeSpan topZur vorigen Überschrift

Während DateTime einen festen Zeitpunkt beschreibt, ist TimeSpan eine Zeitspanne ohne Bezugspunkt. Die Konstruktoren haben konsequenterweise keine Jahresangabe. In der folgenden Syntax sind optionale Parameter kursiv gesetzt:


Public Sub New(ticks As Long)

Public Sub New(days As Integer, hours As Integer, minutes As Integer, _ 
               seconds As Integer, milliseconds As Integer)

Häufig werden Zeitspannen in der Add-Methode der Klasse DateTime verwendet.

Dim punkt As New DateTime(2002, 2, 3, 12, 0, 0) 
Dim spanne As New TimeSpan(3, 12, 15) 
punkt = punkt.Add(spanne) 
Console.WriteLine(punkt)

In der ersten Codezeile wird das Datum 3. Februar 2002 12:00 Uhr instanziiert. Der folgende Konstruktor mit drei Parametern definiert 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 und umgekehrt: TicksPerMillisecond, TicksPerSecond, TicksPerMinute, TicksPerHour und TicksPerDay. Damit können Sie alternativ alle Rechnungen in Einheiten eines Ticks ausführen und anschließend durch eine der Konstanten dividieren, um die Angabe in der entsprechenden Einheit zu erhalten.

Formatierung

Eine TimeSpan-Instanz beschreibt eine Zeitspanne aus Tagen, Stunden, Minuten, Sekunden und Millisekunden. Sie lässt sich in einem String folgenden Formats abbilden:

Tag.Stunden:Minuten:Sekunden.Sekundenbruchteil

Dazu ein Beispiel. Mit

Dim spanne As New TimeSpan(2, 12, 30, 22, 100) 
Console.WriteLine(spanne.ToString())

erhalten Sie die Ausgabe:

2.12:30:22.1000000

Umrechnung

Die Zeitspanne in Tagen, Stunden, Minuten, Sekunden oder Millisekunden ist in den entsprechenden schreibgeschützten Eigenschaften gespeichert. Zu jeder der Zeiteinheiten als ganzzahligem Wert gibt es noch die durch das Präfix Total gekennzeichnete Variante als Fließkommazahl. Die ersten Werte geben die Anzahl dieser Einheit an, die zweiten drücken die gesamte Zeitspanne in der entsprechenden Einheit aus.

Zum Beispiel liefert das Codefragment

Dim spanne As New TimeSpan(3, 12, 15) 
Console.WriteLine("{0} / {1}", spanne.Minutes, spanne.TotalMinutes)

die Ausgabe:

12 / 192,25

Einige statische Methoden des Typs TimeSpan ermöglichen es auch ohne Initialisierung, einer TimeSpan-Variablen einen Wert zuzuweisen: FromTicks, FromMilliseconds, FromSeconds, FromMinutes, FromDays. Zum Beispiel:

Dim ts As TimeSpan = TimeSpan.FromHours(3)         '3 Stunden



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Visual Basic 2008
Visual Basic 2008
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Visual Basic 2012






 Visual Basic 2012


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
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