Windows uses January 1, 1601 as starting date.
What does Real time clock use?
If it uses different starting date, does Windows convert its timestamp(because it uses its date and time) into its own? How?
|
|
This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, see the FAQ.
|
RTC clock saves its time in battery-backed CMOS memory (nowdays it's just a more integrated chip that emulates older designs). CMOS Memory map is pretty standard on PC-compatible computers. According to these CMOS memory map docs:
00h Seconds (BCD 00-59, Hex 00-3B) Note: Bit 7 is read only
01h Second Alarm (BCD 00-59, Hex 00-3B; "don't care" if C0-FF)
02h Minutes (BCD 00-59, Hex 00-3B)
03h Minute Alarm (BCD 00-59, Hex 00-3B; "don't care" if C0-FF))
04h Hours (BCD 00-23, Hex 00-17 if 24 hr mode)
(BCD 01-12, Hex 01-0C if 12 hr am)
(BCD 81-92. Hex 81-8C if 12 hr pm)
05h Hour Alarm (same as hours; "don't care" if C0-FF))
06h Day of Week (01-07 Sunday=1)
07h Date of Month (BCD 01-31, Hex 01-1F)
08h Month (BCD 01-12, Hex 01-0C)
09h Year (BCD 00-99, Hex 00-63)
So it is a straight calendar math to convert these fields to whatever format you fancy: Unix timestamps, DOS-type date/time format, or whatever. Note that one field lacking from the map above is the time zone and DST setting. So, if you're dual-booting into say Windows and Linux you might have problems. Windows defaults to your local time zone, while Linux usually assumes RTC date/time is UTC (which is more sane in my opinion). |
|||||
|
|
It seems (from osdev and Linux
The contents of all these registers are converted to a NT or Unix timestamp using advanced mathematics (i.e. addition and multiplication). For a Linux example, see
Also, the MSKB article you linked is somewhat out-of-date. Starting with XP, Windows doesn't check the RTC every hour; it uses NTP instead, and writes to the RTC. |
||||
|
|
|
a 'Timestamp' (mostly in *nix systems, or any C-like language) usually means the number of seconds since 00:00:00 UTC on January 1, 1970 |
|||||||||||
|