使用时间时出现奇怪行为(空)

Strange behavior when using time(NULL)

本文关键字:时间      更新时间:2023-10-16

我正在使用

time_t t = time(NULL);

获取自 1.1.1970 以来的秒数。

在两台单独的机器上,我得到

两个不同的值,在一台机器上我得到1,419,120,000在另一台机器上我得到7,812,616,799,348,535,896.

重要的是要说,两台机器上的值都很好,但突然停止工作。 其他机器长时间运行相同的代码而没有任何问题。

此外,该项目

编译为32位项目,而该项目在SQL Server 2008 64位操作系统上运行。

有什么建议吗?

提前谢谢。

未指定 std::time 的返回值:

指定std::time_t日历时间的编码,但大多数系统符合 POSIX 规范并返回一个整数类型的值,其中包含自纪元以来的秒数。std::time_t 是 32 位有符号整数的实现(许多历史实现)在 2038 年失败。

看起来您的一个系统给出了您期望的 POSIX 版本提供的内容,而另一个系统......不?

请注意,std::time_t本身也是未指定的:

typedef /* unspecified */ time_t;

虽然没有定义,但这几乎总是一个整数值,用于保存自 1970 年 1 月 1 日 00:00 UTC 以来的秒数(不包括闰秒),对应于 POSIX 时间。

根据 std::time() 的参考

std::time_t 中日历时间的编码未指定,但大多数 系统符合 POSIX 规范并返回积分值 类型保存自纪元以来的秒数。中的实现 其中 std::time_t 是一个 32 位有符号整数(许多历史 实施)在 2038 年失败。

因此,时间的返回值似乎不能保证为"自 1.1.1970 以来的秒数"。

看起来问题是由 Windows 许可问题引起的,我们不得不在 30 天后激活它,我们确实续订了许可证,但重新启动我们的服务没有帮助,但是当我重新安装我们的应用程序时,我开始工作。

问候帕维尔。