1

我目前有一个包含 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 是计算的结果,而不是当前系统时间的实例化。

4

1 回答 1

0

阅读关于 Unix 时间的 Wikipedia 条目

<time.h>POSIX 和 Open Group Unix 规范包括 C 标准库,其中包括头文件中定义的时间类型和函数。ISO C 标准规定time_t必须是算术类型,但不强制要求任何特定类型或编码。

如果您需要以可移植的方式处理大范围的时间,您可能必须使用自己的时间库。我认为您甚至不能指望struct tm覆盖 1901 年到 2038 年以外的范围。

您可能还想阅读有关 time_t 的 StackOverflow 答案

于 2012-12-28T17:05:37.197 回答