如何在时间中添加一年32\t 我在C++中不是很好,我想知道如何在代码中加一年: __time32_t tempTime; _time32(&tempTime); __time32_t now, result; struct tm when; int year = 1; _time32(&now); _localtime32_s( &when, &now ); when.tm_year = when.tm_year + year; result = mktime(&when); trans.expiration = result;

如何在时间中添加一年32\t 我在C++中不是很好,我想知道如何在代码中加一年: __time32_t tempTime; _time32(&tempTime); __time32_t now, result; struct tm when; int year = 1; _time32(&now); _localtime32_s( &when, &now ); when.tm_year = when.tm_year + year; result = mktime(&when); trans.expiration = result;,c++,datetime,C++,Datetime,在这种情况下,它将为您提供当前日期。 我想加上一年 我将尝试以下代码: __time32_t tempTime; _time32(&tempTime); __time32_t now, result; struct tm when; int year = 1; _time32(&now); _localtime32_s( &when, &now ); when.tm_year = when.tm_year + year; result = mktim

在这种情况下,它将为您提供当前日期。 我想加上一年

我将尝试以下代码:

__time32_t tempTime;    
_time32(&tempTime);
__time32_t now, result; 
struct tm  when;
int year = 1;
_time32(&now);
_localtime32_s( &when, &now );
when.tm_year = when.tm_year + year;
result = mktime(&when);
trans.expiration = result;

转换为
tm
结构,增加年份成员,转换回
\uuuu time32\t
\uuu time32\t只是一个别名长整数()不是吗

所以,如果你想增加365天,你就不能这样做:

__time32_t now;
_time32(&now);
__time32_ result = now + (60 * 60 * 24 * 365);

??其中60*60*24*365是一年(365年)内的秒数。

您需要更好地定义您的问题。“一年”是指下一年同一天的同一时间吗?如果是闰日,那意味着什么?如果有闰秒,会发生什么?我的错,我的意思是增加365天。如果问题现在不正确,编辑它-在(临时)注释中添加更正不是这样工作的。添加365天是微不足道的(与添加一年不同)<代码>\uuuu time32\u t是一个算术对象,表示从新纪元开始算起的秒数-只需加上365天的秒数。注意:我的回答基于“我的错,我的意思是加365天”。此代码不会处理闰年等。但它应该加上365天,这是你所知道的。当然,除非,你将从2月29日开始,并在增量后的非闰年着陆…@MattJohnson:不,它仍然有效。使用
mktime()
将时间从
struct tm
转换为
time
。例如,如果您将2016年2月29日更改为2017年2月29日,
mktime()
将把
tm
设置为2017年3月1日,并输出正确的历元时间值。它适用于任何日期-例如1月32日正常化为2月1日,因此您也可以使用该技术添加天数。很好!所以,从根本上说,
mktime
不同于Window的
SystemTimeToFileTime
行为,后者不规范化。对吗?另外,如果一个人预计2016年2月29日+1年将是2017年2月28日,那么他们必须手动对此进行解释。@MattJohnson:是的,但将2月29日+1年映射到3月1日的理由是,它表示从年初开始的相同天数,也表示+365天。因此,它在算术上是一致的。如果你出生于2月29日,你可能会在2月28日庆祝,但人类对这些基本上是非理性的东西赋予文化意义——你必须明确地编码这些文化规范——数学不会有帮助。