根据标准,mktime
应该进行归一化 - 当你想一分半钟添加到struct tm
,你加90秒的tm_sec
并调用mktime
,而忽略它的返回值。什么mktime与参数溢出?
我在标准中没有找到的是参数是否归一化,即使它不能在time_t
(例如将年份设置为2100)中表示。
那么,这段代码是否安全?
struct tm future;
memset(&future, 0, sizeof(future));
future.tm_mon = 1;
future.tm_sec = 90; //I want this to be normalised by mktime
future.tm_year = 200; //but this can cause troubles
mktime(&future);
//future.tm_sec should be 30
//future.tm_min should be 1
//future.tm_year should be still 200
在调用'mktime'之后,你不能只将200赋给'tm_year'吗? –
我不认为这一年可能是1900年前的任何事 –
K-ballo:因为我将不得不处理闰年(例如,在向2008-02_28添加几个小时时) –