Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

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

Posted on 2010-09-08
4
Medium Priority
?
345 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 500 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 500 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

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

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

Having just graduated from college and entered the workforce, I don’t find myself always using the tools and programs I grew accustomed to over the past four years. However, there is one program I continually find myself reverting back to…R.   So …
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.

730 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