DateTime.ToOADate() Method in C#

The DateTime.ToOADate() method in C# is used to convert a DateTime instance to its equivalent OLE Automation date. OLE Automation dates are represented as double-precision floating-point numbers where the integer part represents the number of days since December 30, 1899, and the fractional part represents the time of day.

Syntax

Following is the syntax −

public double ToOADate();

Return Value

Returns a double representing the OLE Automation date equivalent of the current DateTime instance.

How It Works

OLE Automation dates use a specific format where:

  • Integer part: Number of days since December 30, 1899

  • Fractional part: Time portion of the day (0.0 = midnight, 0.5 = noon)

OLE Automation Date Format 43749 Integer Part Days since Dec 30, 1899 . 382349537 Fractional Part Time of day portion Result: 43749.382349537

Example with Specific Date

using System;

public class Demo {
   public static void Main() {
      DateTime d = new DateTime(2019, 10, 11, 9, 10, 35);
      Console.WriteLine("Date = {0}", d);
      double res = d.ToOADate();
      Console.WriteLine("OLE Automation date = {0}", res);
      
      // Break down the result
      int days = (int)res;
      double timePortion = res - days;
      Console.WriteLine("Days since Dec 30, 1899: {0}", days);
      Console.WriteLine("Time portion: {0:F6}", timePortion);
   }
}

The output of the above code is −

Date = 10/11/2019 9:10:35 AM
OLE Automation date = 43749.382349537
Days since Dec 30, 1899: 43749
Time portion: 0.382350

Example with Current Date

using System;

public class Demo {
   public static void Main() {
      DateTime d = new DateTime(2019, 10, 16, 8, 50, 25);
      Console.WriteLine("Date = {0}", d);
      double res = d.ToOADate();
      Console.WriteLine("OLE Automation date = {0}", res);
      
      // Convert back to verify
      DateTime converted = DateTime.FromOADate(res);
      Console.WriteLine("Converted back: {0}", converted);
   }
}

The output of the above code is −

Date = 10/16/2019 8:50:25 AM
OLE Automation date = 43754.3683518634
Converted back: 10/16/2019 8:50:25 AM

Common Use Cases

The ToOADate() method is commonly used when:

  • Interfacing with COM components that expect OLE Automation dates

  • Working with Excel applications where dates are stored in this format

  • Performing date arithmetic where the numeric representation is useful

Conclusion

The DateTime.ToOADate() method converts DateTime instances to OLE Automation date format, represented as a double value. This format is useful for COM interoperability and applications like Excel that use this date representation internally.

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

853 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements