将POSIX显示为日历日期,不带gmtime和asctime

将POSIX显示为日历日期,不带gmtime和asctime,c,date,time,time.h,C,Date,Time,Time.h,我目前有一个包含POSIX时间戳的双精度计数器,并且我成功地使用gmtime和asctime通过时间结构显示日历日期: time_t input = posix; printf("%s",asctime(gmtime(&input))); 这很有效,除非(显然)POSIX时间超出time.h库的限制(即1901-2038),在这种情况下,它返回1901年的日期。有没有简单的替代gmtime/asctime/time.h的方法,或者我只是需要处理原始数据 编辑:我应该补充

我目前有一个包含POSIX时间戳的双精度计数器,并且我成功地使用gmtime和asctime通过时间结构显示日历日期:

    time_t input = posix;
    printf("%s",asctime(gmtime(&input)));
这很有效,除非(显然)POSIX时间超出time.h库的限制(即1901-2038),在这种情况下,它返回1901年的日期。有没有简单的替代gmtime/asctime/time.h的方法,或者我只是需要处理原始数据

编辑:我应该补充一点,结果很可能超出这些限制,因为posix double是计算的结果,而不是当前系统时间的实例化。

阅读:

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

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


您可能还想阅读此内容。

您希望如何将国际标准显示为日历日期?日历日期是指分为年、月、日等的表示。在上述情况下,当double posix的内容为1235736569.980815时,它正确地返回了2009年2月27日星期五12:09:29。我认为除了
time.h
覆盖2038问题之外,几乎没有可行的替代方案。您确定需要涵盖从现在起20年以上的日期吗?:)是的,绝对确定我需要涵盖2038年以后和1901年之前的日期。。。