将POSIX显示为没有gmtime和asctime的日历日期

时间:2012-12-28 15:04:31

标签: c date time time.h

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

1 个答案:

答案 0 :(得分:0)

阅读Wikipedia entry on Unix Time

  

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

如果您需要以便携方式处理大量时间,您可能必须使用自己的时间库。我认为你甚至不能依靠struct tm覆盖1901年至2038年之间的范围。

您可能还想阅读此StackOverflow answer regarding time_t