c++ - 表示纪元之前的日期

标签 c++ c windows datetime epoch

我们有一个定制的日期时间 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/

相关文章:

c - 粗体句子错误 : "Subscripted value is neither array nor pointer vector :("

C 整数数组,表示为转换为十进制的位

C# - 使用 File.WriteAllLines

.net - .NET 和 C++ 应用程序之间的 IPC

c++ - 有没有办法在 C++ 中对整个数组进行排序

c++ - 源操作数和目标操作数 - LLVM 指令

C++ - char** argv 与 char* argv[]

c - 如何计算C中两个矩阵之间的距离

windows - 学习控制台命令的重要性

python - 有没有一种直接的方法可以在 Windows 上获得完整的工作 Python 环境?