我目前正在研究一些C代码,我正在尝试将人类可读日期转换为纪元时间戳(unix时间戳).但是,它总是返回一个负数.我正在使用struct tm和硬编码日期的值,直到我正常工作.下面是代码
struct tm t;
time_t t_of_day;
t.tm_year = 2012 - 1970;
t.tm_mon = 9;
t.tm_mday = 24;
t.tm_hour = 11;
t.tm_min = 34;
t.tm_sec = 30;
t.tm_isdst = 1;
t_of_day = mktime(&t);
printf("Epoch time stamp is: %ld\n", t_of_day);
Run Code Online (Sandbox Code Playgroud)
当这段代码执行时,我得到了输出-858000330.
感谢您的任何帮助,您可以提供.
2012 - 1970计算到42年.1942年是在1970年1月1日之前.这是正常的,但会mktime()导致负时间戳.
来自mktime手册页:
tm_year The number of years since 1900.
Run Code Online (Sandbox Code Playgroud)
改变你的年度计算2012 - 1900,你应该没事.
| 归档时间: |
|
| 查看次数: |
1515 次 |
| 最近记录: |