Mit Zeit rechnen?

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    nafets3646 schrieb:

    Eigentlich sollte doch die Kombination aus Date (-Time) und TimeSpan besser funktionieren, oder?

    Das hängt von der eigentlichen Aufgabe ab. Wenn es nur darum geht, einen Zeitpunkt (Datum+Zeit) um eine konstante Anzahl Stunden/Tage/sonstwas zu verschieben (z.B. "Pfingsten ist Ostern plus x Tage, wenn heute Ostern ist, wann ist dann Pfingsten?"), braucht man keine TimeSpans und kann ohne den Umweg über ein zusätzliches Objekt die entsprechend Methoden der DateTime-Klasse nutzen.

    Geht es um "richtige" Berechnungen dynamischer Ereignisse (z.B.: Wann startet das Programm, wann endet es und wie lang war der Zeitraum dazwischen?) kommen TimeSpans mit ins Spiel. Dazu schaut man sich am besten mal in der Online-Hilfe die arithmetischen Operatoren an, die für DateTime und TimeSpan definiert sind.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    In .NET gibt es für Zeitpunkte (DateTime) und Zeitspannen (TimeSpan) eigene Datentypen. Mit denen lässt sich rechnen, als wären es Zahlen.

    Z.B. kannst du so das Alter einer Person ausrechnen:

    VB.NET-Quellcode

    1. Dim geburtstag As New DateTime(1993, 8, 13) ' 13. August 1993
    2. Dim heute As DateTime = DateTime.Now ' Die eigenschaft Now repräsentiert immer das aktuelle Datum
    3. Dim alter as TimeSpan = heute - geburtstag ' Einfach subtrahieren
    4. Console.WriteLine("Alter in Tagen: " & alter.TotalDays)


    Eine TimeSpan mit deinen 4 Stunden kannst du wie folgt erstellen:

    VB.NET-Quellcode

    1. Dim ts As TimeSpan = TimeSpan.FromHours(4)


    Alternativ kannst du auch den Konstruktor benutzen, wenn du keine FromXXX-Methode findest, die du gerade brauchst.
    Von meinem iPhone gesendet

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nikeee13“ ()

    @Tartaros
    Der Witz daran besteht, dass es einen absoluten Zeit-Nullpunkt gibt (ähnlich wie bei der Temperatur). Das führt dazu, dass die Summe zweier Datums nicht definiert ist:
    Was ist 25.03.2014, 11:40 PLUS 25.03.2014, 12:10 :?:
    Nicht definiert.
    Wohl aber definiert ist die Differenz zweier Datums, das Ergebnis ist eine Zeitdifferenz.
    Und mit einer solchen lässt sich rechnen.
    Also:
    Datum-Uhrzeit PLUS / MINUS Zeitdifferenz IST GLEICH Datum-Uhrzeit.
    Und hierbei wirst Du von .NET gut unterstützt, hieerfür gibt es DateTime-Objekte für Datum-Uhrzeit und es gibt TimeDiff-Objekte für Zeitdifferenzen.
    Diesen Klassen bzw. Strukturen sind die entsprechenden Operatoren überlagert, so dass Du wie mit Zahlen mit ihnen rechnen kannst.

    VB.NET-Quellcode

    1. Dim dt = DateTime.Now
    2. Dim dt2 = dt + New TimeSpan(10, 30, 0)
    3. MessageBox.Show(dt2.ToString)

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!