【发布时间】:2012-12-13 20:02:41
【问题描述】:
我目前有一个包含 POSIX 时间戳的双精度,并且我成功地使用 gmtime 和 asctime 通过 time_t 结构显示日历日期:
time_t input = posix;
printf("%s",asctime(gmtime(&input)));
这很好用,除非(显然)当 POSIX 时间超出 time.h 库的限制(即 1901-2038)时,在这种情况下它返回 1901 年的日期。gmtime/asctime/ 是否有任何简单的替代方法time.h,还是我只需要处理原始数据?
编辑:我应该补充一点,结果很可能超出这些限制,因为 posix double 是计算的结果,而不是当前系统时间的实例化。
【问题讨论】:
-
您希望如何将国际标准显示为日历日期?
-
日历日期我的意思是一个表示分为年、月、日等。在上述情况下,当双posix的内容为1235736569.980815时,它正确返回Fri Feb 27 12:09:29 2009.
-
我几乎不认为
time.h有一个可行的替代方案来解决 2038 年的问题。您确定需要涵盖 20 年后的日期吗? :) -
是的,我绝对需要涵盖 2038 年之后和 1901 年之前的日期...