我有一个结构tm。
我需要添加一些固定间隔(以 xx 年、xx 月、xx 天为单位)
到 tm 结构。
是否有任何标准功能可以执行此操作?
我使用的编译器是 Windows XP 上的 MSVC 2005。
最佳答案
时间格式转换有两个函数:
mktime()
将struct tm
(表示本地时间)转换为time_t
。localtime()
将time_t
转换为struct tm
中的本地时间。
Interesing 是第一个,它接受超出范围的结构成员值并作为转换的副产品适本地设置它们(和所有其他值)。这可用于在算术运算后更正字段数据值。然而,字段类型是 int,所以如果 e. 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
成员,关心一下。当您跳过夏令时切换日期时,它的值可能会导致时间来回移动。
关于c - 向 tm 结构添加一些间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4214429/