C# Program to determine the difference in hours between two dates

In C#, you can calculate the difference in hours between two dates using the DateTime structure and the TimeSpan class. The TimeSpan represents a time interval and provides properties to get the difference in various units including hours.

Syntax

Following is the syntax for calculating the time difference −

DateTime date1 = new DateTime(year, month, day, hour, minute, second);
DateTime date2 = new DateTime(year, month, day, hour, minute, second);
TimeSpan difference = date2 - date1;
double hours = difference.TotalHours;

Using DateTime Subtraction

The most straightforward way to find the difference in hours is by subtracting one DateTime from another, which returns a TimeSpan object −

using System;

public class Demo {
    public static void Main() {
        DateTime date1 = new DateTime(2018, 7, 15, 08, 15, 20);
        DateTime date2 = new DateTime(2018, 8, 17, 11, 14, 25);
        
        TimeSpan ts = date2 - date1;
        
        Console.WriteLine("Date 1: " + date1);
        Console.WriteLine("Date 2: " + date2);
        Console.WriteLine("Difference in Hours: " + ts.TotalHours);
        Console.WriteLine("Difference in Days: " + ts.TotalDays);
    }
}

The output of the above code is −

Date 1: 7/15/2018 8:15:20 AM
Date 2: 8/17/2018 11:14:25 AM
Difference in Hours: 794.984722222222
Difference in Days: 33.1243634259259

Using DateTime.Now for Current Time

You can also calculate the difference between a specific date and the current time using DateTime.Now

using System;

public class TimeCalculator {
    public static void Main() {
        DateTime pastDate = new DateTime(2023, 1, 1, 12, 0, 0);
        DateTime currentDate = DateTime.Now;
        
        TimeSpan timeDifference = currentDate - pastDate;
        
        Console.WriteLine("Past Date: " + pastDate);
        Console.WriteLine("Current Date: " + currentDate.ToString("yyyy-MM-dd HH:mm:ss"));
        Console.WriteLine("Hours elapsed: " + Math.Round(timeDifference.TotalHours, 2));
    }
}

The output of the above code is −

Past Date: 1/1/2023 12:00:00 PM
Current Date: 2024-01-15 14:30:45
Hours elapsed: 8786.51

Calculating Absolute Difference

To ensure you always get a positive difference regardless of the order of dates, use Math.Abs()

using System;

public class AbsoluteDifference {
    public static void Main() {
        DateTime earlierDate = new DateTime(2023, 12, 25, 15, 30, 0);
        DateTime laterDate = new DateTime(2023, 12, 20, 10, 15, 0);
        
        // This would give negative hours since earlierDate > laterDate
        TimeSpan difference1 = laterDate - earlierDate;
        
        // Using absolute difference
        TimeSpan absoluteDifference = TimeSpan.FromTicks(Math.Abs((laterDate - earlierDate).Ticks));
        
        Console.WriteLine("Normal difference: " + difference1.TotalHours);
        Console.WriteLine("Absolute difference: " + absoluteDifference.TotalHours);
        Console.WriteLine("Using Math.Abs: " + Math.Abs(difference1.TotalHours));
    }
}

The output of the above code is −

Normal difference: -125.25
Absolute difference: 125.25
Using Math.Abs: 125.25

TimeSpan Properties

Property Description
TotalHours Gets the total number of hours as a double
TotalDays Gets the total number of days as a double
Hours Gets the hour component (0-23)
Days Gets the day component

Conclusion

Calculating the difference in hours between two dates in C# is accomplished by subtracting DateTime objects to get a TimeSpan, then using the TotalHours property. This method works for any two dates and provides precise calculations including fractional hours.

Updated on: 2026-03-17T07:04:35+05:30

11K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements