是否有一个平台不将 std::time_t 表示为 unix 时间

Is there a platform where std::time_t is not represented as unix time?

本文关键字:表示 unix 时间 time 平台 std 是否 有一个      更新时间:2023-10-16

来自 http://www.cplusplus.com/reference/ctime/time_t :

time_t

能够表示时间的基本算术类型的别名,如函数时间返回的时间。

由于历史原因,它通常实现为一个整数值,表示自 1970 年 1 月 1 日 00:00 UTC 以来经过的秒数(即 unix 时间戳)。尽管库可以使用替代时间表示来实现此类型。

可移植

程序不应直接使用此类型的值,而应始终依赖于对标准库元素的调用来将它们转换为可移植类型。

有人知道这种实现的例子,其中std::time_t不表示为unix时间吗?

根据 §17.6.4.3.4/1:

对于标准 C 库中的每个类型 T,184 类型::T 和 std::T 保留给实现,并且在定义时,::T 应与 std::T 相同。

184 ...time_t......

因此,time_tstd::time_t 都是实现定义的类型。提示在某种程度上是正确的。

POSIX兼容系统尝试将其实现为Unix时间,但POSIX不基于C++标准,反之亦然。也许将来会在特定的嵌入式系统中创建一个具有不同time_t的C++编译器......