在stackoverflow上找到了答案:
Why is the tm_year member in struct tm relative to 1900 rather than 1970 in C on macosx?
对该问题回答的原文:
The struct tm is designed for parsing, displaying, and manipulating human-readable dates. When it was created, dates were commonly written and even stored without the “19” part of the year number and the Y2K problem was around 25 years away. So the convenience of making tm_year directly printable as two digits, by making it relative to 1900, apparently seemed reasonable at the time.
大概意思就是说:
struct tm用于解析,显示和操作人类可读的日期。 在创建日期时,日期通常是在年份去掉19”部分的情况下编写与存储,并且距离Y2K问题大约还有25年。 因此,相对于1900,将tm_year直接打印成两位数就十分便利,显然在当时是合理的。