c++ 根据当前日期往前往后推算日期

// -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);
}

  

posted on 2022-08-03 15:15  M1911  阅读(262)  评论(0编辑  收藏  举报