programming - Excel - Excel Date/Time internal formatWhat links here?
Internally, Excel uses a floating point number to represent dates and time. The fraction repersents the portion of the day that has passed. For instance, 10:22 (AM) = 0.4319. This is:

10 hours * 60 minutes per hour + 22 minutes / 1440.0 minutes per day.


The date is represented in the the integer part of the number. January 1, 1900 is day 1. So this makes the integer part the number of days past Dec 31, 1899. Except that 1900 was not a leap year, but Excel treats it as if it was "in order to be compatible with other programs". This means dates prior to Mar 1, 1901 are misrepresented.

The following is taken from Microsoft's website:
  1. If the year is evenly divisible by 4, go to step 2. Otherwise, go to step 5.
  2. If the year is evenly divisible by 100, go to step 3. Otherwise, go to step 4.
  3. If the year is evenly divisible by 400, go to step 4. Otherwise, go to step 5.
  4. The year is a leap year (it has 366 days).
  5. The year is not a leap year (it has 365 days).



int days_in_year(int year)
{
    if ((year % 4) != 0) return 365;
    if ((year % 100) != 0) return 366;
    if ((year % 400) != 0) return 365;
    return 366;
}
Time internal format
electronics - Complex programmable logic device
MC6802 - instruction set - set overflow flag
MC6802 - instruction set - Increment stack pointer
programming - Windows - findfirstfile and findnextfile
programming:windows:networking
MC6802 - instruction set - Decrement stack pointer
programming:DDE
php_errors
programming:windows:WM_SIZING
programming:c:NULL
programming - DDE
programming:c:size_t
filename:programming - Excel - Excel Date/Time internal format
filename:programming%20%2D%20Excel%20%2D%20Excel%20Date%2FTime%20internal%20format
last edit:March 25 2009 19:38:30 (5991 days ago)
ct = 1755698029.000000 = August 20 2025 09:53:49
ft = 1238024310.000000 = March 25 2009 19:38:30
dt = 517673719.000000