代表 2012 年 3 月 2 日的字符串“2012-03-02”作为输入变量 (char *) 提供给我。
如何在 C 语言中将此日期转换为 unix 纪元时间?
最佳答案
本地时间还是 UTC?如果是 UTC,进行转换的最简单方法是完全避免使用 C 时间 API,并使用 POSIX 中自纪元以来秒数的公式:
tm_sec + tm_min*60 + tm_hour*3600 + tm_yday*86400 +
(tm_year-70)*31536000 + ((tm_year-69)/4)*86400 -
((tm_year-1)/100)*86400 + ((tm_year+299)/400)*86400
来源:http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_15
如果是本地时间,问题会变得很糟糕,因为 time_t
不能保证表示为自纪元以来的秒数,POSIX 系统除外,而且它很难计算与纪元对应的 time_t
值(mktime
将不起作用,因为它使用本地时间)。不过,一旦计算出纪元的 time_t
,只需使用 mktime
作为您解析的时间值,然后调用 difftime
。
关于c - 如何在 C 中将 "2012-03-02"转换为 unix 纪元时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9542278/