AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeitunterschied

Ein Thema von faux · begonnen am 18. Sep 2005 · letzter Beitrag vom 18. Sep 2005
Antwort Antwort
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#1

Zeitunterschied

  Alt 18. Sep 2005, 08:08
Hallo!

Kann mir mal wer ganz kurz ein Beispiel geben, wie ich in C# oder Delphi.NET mit Zeitstamps rechne?

Also ich will einer Variable die jetzige Zeit zuweisen, und später dann den Zeitunterschied zwischen der Variable und Jetzt haben...

Danke.
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Zeitunterschied

  Alt 18. Sep 2005, 09:54
Besser kann man es doch gar nicht mehr beschreiben:
.NET FrameWork SDK-Dokumentation - DateTime-Struktur
Hinweise
Ein DateTime-Wert stellt Angaben über Datum und Uhrzeit vom 1. Januar 0001, 00:00:00 u. Z. (unserer Zeitrechnung) bis zum 31. Dezember 9999, 23:59:59 u. Z. dar.
Zeitwerte werden in Einheiten von 100 Nanosekunden gemessen, die als Ticks bezeichnet werden. Ein bestimmtes Datum ist die Anzahl Ticks seit dem 1. Januar 1, 00:00:00 u. Z. nach dem GregorianCalendar-Kalender. Ein Tickswert von 31241376000000000 stellt z. B. Freitag, den 1. Januar 0100, 00:00:00 dar. Ein DateTime-Wert bezieht sich immer auf den Kontext eines expliziten Kalenders oder eines Standardkalenders.
Die Werttypen DateTime und TimeSpan unterscheiden sich darin, dass DateTime einen Zeitpunkt und TimeSpan ein Zeitintervall darstellt. Dies bedeutet z. B., dass eine DateTime von einer anderen subtrahiert und so das dazwischen liegende Zeitintervall abgerufen werden kann. Für die Berechnung eines Datums in der Zukunft kann auch eine positive TimeSpan zur aktuellen DateTime addiert werden.
Zeitwerte können zu Instanzen von DateTime addiert werden und von ihnen subtrahiert werden. Zeitwerte können negativ oder positiv sein und in Einheiten von Ticks oder Sekunden bzw. als Instanzen von TimeSpan ausgedrückt werden. Die Methoden und Eigenschaften dieses Werttyps berücksichtigen Einzelheiten wie Schaltjahre und die Anzahl der Tage eines Monats.
Beschreibungen von Zeitwerten dieses Typs werden oft mit Hilfe des UTC-Standards (Coordinated Universal Time) angegeben, der früher als GMT (Greenwich Mean Time) bezeichnet wurde.
Berechnungen und Vergleiche von DateTime-Instanzen sind nur dann sinnvoll, wenn die Instanzen in derselben Zeitzone erstellt wurden. Aus diesem Grund wird davon ausgegangen, dass der Entwickler über einen externen Mechanismus verfügt, z. B. eine explizite Variable oder Richtlinie, aus der hervorgeht, in welcher Zeitzone eine DateTime erstellt wurde. Die Methoden und Eigenschaften dieser Struktur verwenden bei Berechnungen und Vergleichen immer die lokale Zeitzone.
Bei einer Berechnung mit einer Instanz von DateTime, z. B. Add oder Subtract, wird der Wert der Instanz nicht geändert. Die Berechnung gibt hingegen eine neue Instanz von DateTime zurück, deren Wert das Ergebnis der Berechnung ist.
Alle DateTime-Member verwenden implizit den gregorianischen Kalender für Operationen. Ausnahmen hierbei sind Konstruktoren, die einen Kalender angeben, und Methoden, die implizit einen Kalender mit einem von IFormatProvider abgeleiteten Parameter angeben, z. B. System.Globalization.DateTimeFormatInfo. Mit Hilfe der System.Globalization.Calendar-Klasse können Datum- und Uhrzeitoperationen mit einem anderen Kalender ausgeführt werden.
Dieser Typ erbt von IComparable, IFormattable und IConvertible. Verwenden Sie für Konvertierungen die Convert-Klasse anstelle der expliziten Implementierung der Schnittstellenmember von IConvertible für diesen Typ.
Beispiel
[Visual Basic, C#, C++] Das folgende Beispiel veranschaulicht das Vergleichen äquivalenter DateTime-Werte, wobei ein geringer Unterschied für die Bestimmung als "gleich" zulässig ist.

Code:
class DateTimeTester {

    static bool RoughlyEquals(DateTime time, DateTime timeWithWindow, int windowInSeconds, int frequencyInSeconds)
    {

            long delta = (long)((TimeSpan)(timeWithWindow - time)).TotalSeconds % frequencyInSeconds;

            delta = delta > windowInSeconds ? frequencyInSeconds - delta : delta;

            return Math.Abs(delta) < windowInSeconds;

    }

    public static void Main()
    {
            int window = 10;
            int freq = 60 * 60 * 2; // 2 hours;

            DateTime d1 = DateTime.Now;

            DateTime d2 = d1.AddSeconds(2 * window);
            DateTime d3 = d1.AddSeconds(-2 * window);
            DateTime d4 = d1.AddSeconds(window / 2);
            DateTime d5 = d1.AddSeconds(-window / 2);

            DateTime d6 = (d1.AddHours(2)).AddSeconds(2 * window);
            DateTime d7 = (d1.AddHours(2)).AddSeconds(-2 * window);
            DateTime d8 = (d1.AddHours(2)).AddSeconds(window / 2);
            DateTime d9 = (d1.AddHours(2)).AddSeconds(-window / 2);

            Console.WriteLine("d1 ~= d1 [true]: " + RoughlyEquals(d1, d1, window, freq));
            Console.WriteLine("d1 ~= d2 [false]: " + RoughlyEquals(d1, d2, window, freq));
            Console.WriteLine("d1 ~= d3 [false]: " + RoughlyEquals(d1, d3, window, freq));
            Console.WriteLine("d1 ~= d4 [true]: " + RoughlyEquals(d1, d4, window, freq));
            Console.WriteLine("d1 ~= d5 [true]: " + RoughlyEquals(d1, d5, window, freq));

            Console.WriteLine("d1 ~= d6 [false]: " + RoughlyEquals(d1, d6, window, freq));
            Console.WriteLine("d1 ~= d7 [false]: " + RoughlyEquals(d1, d7, window, freq));
            Console.WriteLine("d1 ~= d8 [true]: " + RoughlyEquals(d1, d8, window, freq));
            Console.WriteLine("d1 ~= d9 [true]: " + RoughlyEquals(d1, d9, window, freq));


    }
}
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Zeitunterschied

  Alt 18. Sep 2005, 13:34
DANKE!
Genau sowas hab ich gesucht..
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz