我们有一个定制的日期时间 C++ 类,它表示从纪元开始经过的秒数的时间。这存储为 int64。此类提供了许多辅助函数来读取和写入各种类型的日期时间格式。
不幸的是,它不能处理纪元之前的日期,因为它的方法依赖于 gmtime() 和 mktime() 进行许多操作,而我们的 Windows 系统不支持纪元之前的日期。有谁知道在 Windows 上支持负值的 gmtime 和 mktime 的替换。
此限制的一个示例是我们的应用程序无法存储 1970 年之前的生日,这是因为每个日期都必须使用此类。
我不清楚我在问什么,这是因为我对日期时间实现/使用的了解有限,而且我不愿意理解那个巨大的遗留类,所以如果你觉得这个问题可以用另一种方式来表达,或者我可能会寻找不同的东西,请随时提出建议。
最佳答案
你可以使用 Boost.DateTime ,或使用 Win32 APIs直接而不是 CRT。
您可能需要进行大量测试,以确保数据处理不会在您的返工中发生变化。在开始任何重构之前,请确保您对库进行了详尽的单元测试。
如果您必须考虑您的值(value)观在世界上多个不同地点都有效,请使用 UTC time作为您的规范形式,并根据需要进行本地时间转换以进行合理的输入/显示。
关于c++ - 表示纪元之前的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15345901/