我有一个结构tm.
我需要添加一些固定间隔(以xx年,xx月,xx天给出)
到tm struct.
有没有标准函数可以做到这一点?
我使用的编译器是 Windows XP 上的 MSVC 2005。
有两个转换时间格式的函数:
-
mktime()
哪个转换struct tm
(代表当地时间)至time_t
.
-
localtime()
哪个转换time_t
到当地时间struct tm
.
有趣的是第一个,它接受超出范围的结构成员值,并作为转换的副产品适当地设置它们(以及所有其他)。这可用于在算术运算之后校正字段数据值。然而字段的类型是 int,因此如果 e. 可能会溢出(在 16 位系统上)。 G。您添加一年中的秒数。
因此,如果您想要实际日期,此代码将有所帮助(来自 @pmg 的答案的修改副本):
struct tm addinterval(struct tm x, int y, int m, int d) {
x.tm_year += y;
x.tm_mon += m;
x.tm_mday += d;
mktime(&x);
return x;
}
另请注意tm_isdst
会员,关心一下。当您跳过夏令时切换日期时,其值可能会导致时间前后移动。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)