【问题标题】:time.h drop-in replacement : time_t for values (year < 1970) and (year > 2038) in ANSI-C or C99time.h 替换:time_t 用于 ANSI-C 或 C99 中的值(年 < 1970)和(年 > 2038)
【发布时间】:2008-12-01 16:05:23
【问题描述】:

我在 ANSI C 中有一段代码,它使用 time.h 库和 time_h 结构来(在其他与日期相关的计算中)计算出两个给定日期之间的间隔。这工作正常,但这将我的代码限制在 1970 到 2038 之间。我现在想让我的代码更通用。

是否有一个通用的 C 库(ANSI 或 C99 标准)在大于 time.h 的范围内以 1 天的粒度实现日期计算(即我需要当天的分辨率,但不需要小时分辨率) ?

(我正在修改代码以处理历史事件,因此如果它也可以处理 B.C. 的日期会很好......)

【问题讨论】:

    标签: c datetime


    【解决方案1】:

    是的,y2038 project 正在重新实现 time.h 以确保 2038 年安全。到目前为止,gmtime()localtime()mktime()gmtime() 已经完成并经过良好测试。这些是难点。它向任一方向跨越约 3000 亿年。

    【讨论】:

      【解决方案2】:

      在 SQLite 中使用了一个公共域实现:documentationsource

      我还发现Calendar FAQ 很有用; this 页面很早​​就在 Google 上弹出。

      【讨论】:

        猜你喜欢
        • 2012-11-09
        • 1970-01-01
        • 2021-09-22
        • 2018-08-19
        • 2011-08-15
        • 2015-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多