// -1往前推1天 1往后推1天
int calc_date(int days)
{
struct tm tmin;
struct tm tmout;
SYSTEMTIME st;
GetLocalTime(&st);
tmin.tm_year = st.wYear - 1900;
tmin.tm_mon = st.wMonth - 1;
tmin.tm_mday = st.wDay;
tmin.tm_hour = st.wHour;
tmin.tm_min = st.wMinute;
tmin.tm_sec = st.wSecond;
tmin.tm_isdst = -1;
/*将tm结构数据转换成1970年1月1日开始计算的秒数*/
time_t _tm = mktime(&tmin);
/*计算需要增加或者减少天数对应的秒数,结果是最终日期对应1970年1月1日开始计算的秒数*/
_tm += days * 60 * 60 * 24;
/*将time_t的信息转化真实世界的时间日期表示,结果由结构tm返回*/
localtime_s(&tmout,&_tm);
/*tm类型的时间转换。将tm按照%Y%m%d格式转化赋值到输出中*/
char buf[12];
memset(buf, 0, sizeof(buf));
strftime(buf, sizeof(buf), "%Y%m%d", &tmout);
return atoi(buf);
}