Solved

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

Posted on 2010-09-08
4
344 Views
Last Modified: 2012-05-10
Please submit a code snippet which is most efficient one.. I know about TimeSpan Class Method is there any other method thats more effective?
0
Comment
Question by:starlite551
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
4 Comments
 
LVL 65

Expert Comment

by:rockiroads
ID: 33633883
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
 
LVL 10

Expert Comment

by:joriszwaenepoel
ID: 33633957
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
 
LVL 13

Assisted Solution

by:Naman Goel
Naman Goel earned 125 total points
ID: 33634192
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
 
LVL 14

Accepted Solution

by:
existenz2 earned 125 total points
ID: 33661625
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

Featured Post

Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
Q&A with Course Creator, Mark Lassoff, on the importance of HTML5 in the career of a modern-day developer.
The goal of this video is to provide viewers with basic examples to understand and use conditional statements in the C programming language.
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.

626 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question