我目前有一个包含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是计算的结果,而不是当前系统时间的实例化。
答案 0 :(得分:0)
阅读Wikipedia entry on Unix Time:
POSIX和Open Group Unix规范包括C标准库,其中包括
<time.h>
头文件中定义的时间类型和函数。 ISO C标准规定time_t
必须是算术类型,但不要求任何特定类型或编码。
如果您需要以便携方式处理大量时间,您可能必须使用自己的时间库。我认为你甚至不能依靠struct tm
覆盖1901年至2038年之间的范围。