Home | Contact Us

CSharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript

C# DateTime Subtract Method

This C# article shows how to use the DateTime.Subtract method. Subtract computes differences between two dates.

DateTime subtract. One DateTime can be subtracted from another.

This returns the difference in time between the two dates. For example, the difference between December 25 and January 1 in the year 2008 is seven days.

Example. We use the Subtract method with one argument on the DateTime struct instance. You can use Subtract to get the difference between two dates. You must subtract the smaller date from the larger date.


Next: We see that the difference between Christmas (December 25) and New Year's Day (January 1) is seven days at the end of 2008.

C# program that uses DateTime.Subtract

using System;

class Program
    static void Main()
	// Create DateTime instances for December 25 and January 1.
	// ... Then compute the difference with Subtract.
	// ... Write the result.
	DateTime christmas = new DateTime(2008, 12, 25);
	DateTime newYears = new DateTime(2009, 1, 1);
	TimeSpan span = newYears.Subtract(christmas);
	Console.WriteLine("{0} days", span.TotalDays);


7 days

This program introduces the Main entry point and it instantiates two DateTime struct instances. Note how the DateTime constructors are passed three arguments. These specify the year, the month, and the day.

Negative TimeSpans. If you subtract a later date from an earlier date, you can receive a negative TimeSpan value. For example, change the "newYears" parameters to be the year 2007, and you will get -724 days (negative time).

Discussion. Each DateTime struct stores a ticks field—this is a long type representation of the time. When using Subtract, the long fields from the two DateTime instances are simply subtracted.


And: This can be implemented using low-level intermediate language. Please look inside Subtract with IL Disassembler.

IL Disassembler Tutorial

Summary. We saw the DateTime type and its Subtract instance method. This method receives one argument and returns a TimeSpan instance indicating the elapsed time. Typically we subtract a smaller and earlier date from the larger date.