The DOS date/time format is a bitmask:
24 16 8 0
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|Y|Y|Y|Y|Y|Y|Y|M| |M|M|M|D|D|D|D|D| |h|h|h|h|h|m|m|m| |m|m|m|s|s|s|s|s|
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
\___________/\________/\_________/ \________/\____________/\_________/
year month day hour minute second
The year is stored as an offset from 1980.
Seconds are stored in two-second increments.
(So if the "second" value is 15, it actually represents 30 seconds.)
我不知道您正在使用的 tm_struct 但如果它是http://www.cplusplus.com/reference/ctime/tm/那么
unsigned long FatTime = ((pTime.tm_year - 80) << 25) |
((pTime.tm_mon + 1) << 21) |
(pTime.tm_mday << 16) |
(pTime.tm_hour << 11) |
(pTime.tm_min << 5) |
(pTime.tm_sec >> 1);
编辑:如评论中所述,我在月份添加了 +1