【发布时间】:2012-09-03 09:32:44
【问题描述】:
我想将以数字形式给出的年、月、日等 UTC 日期和时间转换为 time_t。一些系统为此提供了诸如mkgmtime 或timegm 之类的功能,但这不是标准的,并且在我的Solaris 系统上不存在。
到目前为止,我发现的唯一解决方案是使用 setenv 将本地时区设置为 UTC,然后调用 mktime。然而,这种方法不是线程安全的、速度慢、不可移植,甚至会在我的系统上产生内存泄漏。
我还看到了尝试使用gmtime 确定当前UTC 偏移然后将其添加到mktime 的结果的方法。但据我所见,所有这些方法都有差距。毕竟从当地时间到UTC的转换并不是唯一的。
您认为最好的解决方案是什么?
【问题讨论】:
-
@Fred Larson:这不是关于转换字符串,而是关于从单个数字计算 time_t。
-
我明白了。我误解了这个问题。