Feedback

Ist Zeitpunkt von zwei Date-Time Objekte gleich?

Sprache: C#

Möchte man herausfinden, ob zwei DateTime Objekte exakt den gleichen Zeitpunkt angeben, kann man sie einfach voneinander subtrahieren. Bleibt eine Differenz von 0 übrig, sind beide Zeitpunkte gleich. Die Ausgabe für dieses Beispiel auf der Console ist: date1 und date2 gleich? True date1 und date3 gleich? False
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var date1 = new DateTime(2019, 11, 03);
            var date2 = new DateTime(2019, 11, 03);
            var date3 = new DateTime(2019, 11, 04);

            Console.WriteLine("date1 und date2 gleich? {0}", AreDatesEqual(date1, date2));
            Console.WriteLine("date1 und date3 gleich? {0}", AreDatesEqual(date1, date3));

            Console.Read();
        }

        private static bool AreDatesEqual(DateTime date, DateTime dateToCompare)
        {
            return (date - dateToCompare) == new TimeSpan(0);
        }
    }
}
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var date1 = new DateTime(2019, 11, 03);
            var date2 = new DateTime(2019, 11, 03);
            var date3 = new DateTime(2019, 11, 04);

            Console.WriteLine("date1 und date2 gleich? {0}", AreDatesEqual(date1, date2));
            Console.WriteLine("date1 und date3 gleich? {0}", AreDatesEqual(date1, date3));

            Console.Read();
        }

        private static bool AreDatesEqual(DateTime date, DateTime dateToCompare)
        {
            return (date - dateToCompare) == new TimeSpan(0);
        }
    }
}

2 Kommentare

  1. [code]// Oder man schaut 3 Sekunden in die Dokumentation, stellt fest, dass DateTime den Equality-Operator überlädt, und vergleicht einfach:
    var eq = d1 == d2;

    // Alternativ überladen fast alle Framework Typen, bei denen Wertvergleich Sinn ergibt, die Equals Methode, weshalb das hier ebenfalls funktioniert.
    eq = d1.Equals(d2);
    eq = object.Equals(d1, d2);[/code]

    Ich finde es aber faszinierend, dass du dann die resultierende TimeSpan-Instanz per Equality-Operator vergleichst.