【发布时间】:2011-12-16 09:28:05
【问题描述】:
是否有针对 32 位系统的 64 位 Unix 时间戳转换的 C++ 实现?我需要将struct tm 转换为 64 位整数,反之亦然,包括闰年、时区、UTC。还需要它可移植,至少对于 GNU/Linux 和 Windows。
【问题讨论】:
-
那个时间戳应该代表什么?如果它距离纪元只有几秒钟,那么您可以使用 32 位转换函数并将结果复制为 64 位整数(只要您在 2038 年之前)
-
time_t在大多数系统上不是已经是 64 位了吗? Windows 也具有 64 位变体的大多数功能。只需谷歌即可。 -
整数不能表示时区,因为它是与任意纪元(在 UNIX 中为 1970 年 1 月 1 日)的相对偏移量,但时区未定义。如果你想表示这些元素,无论如何你都必须将它们分解为
struct。也没有人“代表”闰年;他们会怎样?对它们进行无意义的计数吗? -
PlasmaHH:没错,只是在 2038 年之前
-
RedX:我相信只在 64 位系统上。如果我错了,请纠正我。
标签: c++ linux 64-bit 32bit-64bit time-t