首页 > 解决方案 > 如何将 C++ time_t 对象设置为纪元?

问题描述

这个问题类似于以下内容:

将纪元转换为 time_t

将 time_t 转换为 int

但我在那里没有我的答案。

如果您想获取当前日期/时间,您可以在以下标准示例中调用time(0)或喜欢:time(NULL)

// current date/time based on current system
   time_t now = time(0);

我想定义一个函数,它将返回一个 time_t 并允许客户端在发生错误时传递一个可选的默认返回值。此外,我想在那个“默认”参数上设置一个默认值。这在我拥有的库中提供了对称性,我拥有跨多种语言的一对一计数器部分,因此我不打算重新设计所有这些。

我的想法是将默认返回设置为纪元。然后,客户理论上可以轻松地评估该回报,并确定一个时期的回归很可能(如果不是总是)表明它是无效的。我可以想到一些替代方案,但没有什么干净的,这也符合我现有的模式。

是否有一种简短而甜蜜的方法可以使我的函数签名具有该对象的默认值等于纪元?例如

   ...myfunc(...., const time_t &defVal=time(0) );

如果0指的是纪元而不是当前日期/时间,那将是完美的!

标签: c++datetimestl

解决方案


该函数std::time()将自纪元以来的秒数返回为std::time_t. 因此,要在 epoch 设置为零后找到std::time_t

std::time_t t = 0;

因此,您可以执行以下操作:

void myfunc(const std::time_t& defVal = 0)

推荐阅读