【问题标题】:Date handling before 1970 c++1970 c++ 之前的日期处理
【发布时间】:2014-03-18 12:34:18
【问题描述】:

我想知道在这里做什么最好。我被分配了一个作业,我必须更新一个使用 Ctime 的 Date 类。

该课程现在必须适用于 1970 年之前的日期。我环顾四周,但没有找到太多...

所以我想我的问题是实现这一目标的最佳方法是什么?

日期范围从 [1970-2037] 到 [1900-2037]

【问题讨论】:

  • 如果你必须处理 1900,你就有问题了。 32 位有符号类型可以处理 1901 年 12 月到 2038 年 1 月的范围,因此处理 1901 年的其余部分和 1900 年的所有部分需要不同的东西。您是否尝试过使用负数作为时间戳?
  • 最简单的解决方案是 64 位签名。不过,您可能需要编写自己的 localtime(这很有趣 - 阿姆斯特丹时间曾经是 GMT +0h 19m 32,13s!)
  • time_t 通常是有符号整数类型,在许多实现中,标准函数在负值下都能正常工作。但是 32 位仅从 1901-12-13 到 2038-01-19。

标签: c++ ctime


【解决方案1】:

假设您的意思是 CTimeMFC,如果您启用 OLE,您可以使用 COleDateTime 作为替代品。根据文档,它支持日期“从 100 年 1 月 1 日到 9999 年 12 月 31 日”。

【讨论】:

  • 谢谢我在阅读文档后决定与 ColeDateTime 合作
【解决方案2】:

您可以将日期存储为自 1970-01-01 或任何其他纪元以来的有符号整数天数。负日期是 1970 年之前的日期。

或者你可以使用Boost.Date_Time library

【讨论】:

    猜你喜欢
    • 2013-05-26
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 2023-04-09
    • 2023-03-16
    • 1970-01-01
    • 2011-04-29
    • 2017-04-28
    相关资源
    最近更新 更多