我使用mktime从当前本地时间创建unix时间戳:
#include <time.h>
int _tmain(int argc, _TCHAR* argv[])
{
struct tm info;
// 16.05.2014
info.tm_mday = 16;
info.tm_mon = 5;
info.tm_year = 114; // Years since 1900
// 08:00:00 Uhr
info.tm_hour = 8;
info.tm_min = 0;
info.tm_sec = 0;
// Convert to Unix timestamp
info.tm_isdst = -1;
time_t timestamp = mktime(&info);
printf("Timestamp: %i", timestamp);
}这给了我:
1402898400
当将其转换回人类可读的时间(通过某个网站)时,这将转换为:
2014年6月16日08:00
正如你所看到的,这比我预期的少了一个月(5月(5),6月6)。为什么?
发布于 2014-05-16 06:16:56
C11 7.27.1时间组成 int tm_sec;//秒之后的分钟- 0,60 int tm_min;//分钟后的小时- 0,59 int tm_hour;//小时自午夜- 0,23 int tm_mday;//日月- 1,31 int tm_mon;//月自1月- 0,11 int tm_year;//年自1900年int tm_wday;//日自星期日- 0,6 int tm_yday;//日自1月1日- 0,365 int tm_isdst;//夏时旗
tm_mon从0开始,而不是1。因此,5的价值意味着现在是六月,而不是五月。
https://stackoverflow.com/questions/23693669
复制相似问题