Which is the best way to find Date difference between two dates in C#?

Please submit a code snippet which is most efficient one.. I know about TimeSpan Class Method is there any other method thats more effective?
LVL 12
starlite551Asked:
Who is Participating?
 
existenz2Connect With a Mentor Commented:
Using substract is the most efficient. Using ticks is a bit slower (see code example):
DateTime now = DateTime.Now;
            DateTime last = DateTime.Now.AddHours(-4);

            Stopwatch watch = new Stopwatch();
            watch.Start();
            for(int i = 0; i < 1000000; i++)
            {
                TimeSpan timeSpan = now.Subtract(last);
            }
            watch.Stop();
            Console.WriteLine(watch.ElapsedMilliseconds);

            Stopwatch watch2 = new Stopwatch();
            watch2.Start();
            for (int i = 0; i < 1000000; i++)
            {
                long ticks = now.Ticks - last.Ticks;
            }
            watch2.Stop();
            Console.WriteLine(watch2.ElapsedMilliseconds);

            Console.Read();

Open in new window

0
 
rockiroadsCommented:
Not that I know off. I thought it better to use what is available in dotnet and for c# that seems to be it.

A little discussion on that here including an alternative using vb namespaces http://www.c-sharpcorner.com/UploadFile/DipalChoksi/DateDiff_CS_DC09132006172429PM/DateDiff_CS_DC.aspx
0
 
joriszwaenepoelCommented:
dim date1 as datetime = ...
dim date2 as datetime = ...

dim datediff = date2.subtract(date1)

This gives you a TimeSpan object with all the information.  What makes you think this is not efficient?
0
 
Naman GoelConnect With a Mentor Software engineer 1Commented:
actually DateTime.Subtract method should be fine as it is just doing simple subtraction, so this method will be too fast and good.
 
 

public TimeSpan Subtract(DateTime value)
{
    return new TimeSpan(this.InternalTicks - value.InternalTicks);
}

public DateTime Subtract(TimeSpan value)
{
    long internalTicks = this.InternalTicks;
    long num2 = value._ticks;
    if ((internalTicks < num2) || ((internalTicks - 0x2bca2875f4373fffL) > num2))
    {
        throw new ArgumentOutOfRangeException("value", Environment.GetResourceString("ArgumentOutOfRange_DateArithmetic"));
    }
    return new DateTime(((ulong) (internalTicks - num2)) | this.InternalKind);
}

Open in new window

0
All Courses

From novice to tech pro — start learning today.