【发布时间】:2014-03-07 21:26:33
【问题描述】:
正如一些转换这些 unix 时间戳的网站所说,
2013/05/07 05:01:00 (yyyy/mm/dd, hh:mm:ss) is 1367902860.
我在 C++ 中执行此操作的方式,印章与日期不同。 代码如下:
time_t rawtime;
struct tm * timeinfo;
int year=2013, month=5, day=7, hour = 5, min = 1, sec = 0;
/* get current timeinfo: */
time ( &rawtime ); //or: rawtime = time(0);
/* convert to struct: */
timeinfo = localtime ( &rawtime );
/* now modify the timeinfo to the given date: */
timeinfo->tm_year = year - 1900;
timeinfo->tm_mon = month - 1; //months since January - [0,11]
timeinfo->tm_mday = day; //day of the month - [1,31]
timeinfo->tm_hour = hour; //hours since midnight - [0,23]
timeinfo->tm_min = min; //minutes after the hour - [0,59]
timeinfo->tm_sec = sec; //seconds after the minute - [0,59]
/* call mktime: create unix time stamp from timeinfo struct */
date = mktime ( timeinfo );
printf ("Until the given date, since 1970/01/01 %i seconds have passed.\n", date);
生成的时间戳是
1367899260, but not 1367902860.
这里有什么问题?即使我更改为小时-1 或小时+1,它也不匹配。编辑:是的,如果我将 1 添加到小时,它会起作用。之前也加了 1 到分钟。
【问题讨论】: