这个问题类似于以下内容:
convert epoch to time_t
Converting time_t to 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
代表时代而不是当前日期/时间,那将是完美的! 最佳答案
使用0
有什么问题? (time_t)0
代表纪元本身(如果要查找实际的纪元日期/时间,请将(time_t)0
传递给gmtime()
或localtime()
)。
time_t myfunc(...., time_t defVal = 0 );
或者,您可以改用
(time_t)-1
,这不是有效时间,因为time()
会在错误时返回(time_t)-1
,并且time_t
代表自该纪元以来的正秒数。time_t myfunc(...., time_t defVal = (time_t)-1 );
如果用户不提供自己的默认值,则两种方法都可以为用户提供易于比较的内容。