First, thanks for those who decided to close this question for no good reason whatsoever, forcing me to put an answer into comments first.
This is one of the two formats used by old Microsoft Excel versions to store dates and times. Both store the date as consecutive numbers with the start date either at Jan 1st 1900 or Jan 1st 1904. The 1904 seems to be based on the date format used internally by MacOS in 1984, making you wonder what genius preferred having two incompatible date formats to adding one line of code. The Jan 1st 1900 was probably assigned a value of 1.0 so that a value of 0.0 can be used to indicate "no date". There are 25 leap years from Jan 1st 1900 to Jan 1st 2000, because 1900 is a leap year. So the difference in days is 36500 + 25 leap days.
The number is stored as a 64 bit double precision floating point number. Start of Jan 1st 2000 is 40 e1 d5 c0 00 00 00 00. There is one bit sign, 11 bit biased exponent, and a 53 bit mantissa with the leading bit not stored. So sign = 0, biased exponent = 0x40e, mantissa = 11 d5 c0 00 00 00, with five bits in the highest byte.
The number 1.0 has a biased exponent of 0x3ff, so the number here has a real exponent of 0x40e - 0x3ff = 15, for numbers from 32768 to 65535. The highest 16 bits of the mantissa are the day. 5 bits = 17 from 0x11, 8 bits from 0xd5 = 211, 3 highest bits from 0xc0 = 6. Total 36526. So base 1st Jan 1900 = 1, add 100 x 365 days, plus 25 leap years.
One second is stored as 1.0 / 86400. There are 37 bits for fractions of days until 65536 days from 1900, around 2079. Until then the resolution is 2^37 / 86400 or about 1590728.6 per second.
But the algorithm is simple: Convert the date and time into number of days since Jan 1st 1900 and add one; calculate and store the result as 64 bit floating point. To add a day, add 1.0. To add a second, add 1.0 / 86400. To get days and seconds, take floor(x) to give days, and multiply the remainder by 86400 to get seconds.