使用windows API 得到昨天的日期 SYSTEMTIME 对象,怎么搞?
发布网友
发布时间:2022-04-22 23:43
我来回答
共2个回答
热心网友
时间:2023-10-08 21:45
没有直接获取昨天日期的api,这个是获取当前日期的api
void WINAPI GetSystemTime(
__out LPSYSTEMTIME lpSystemTime
);
这个就ok
lpSystemTime是SYSTEMTIME 指针
获得今天的之后,然后根据今天的日期去推算昨天的.
判断今天的日期,
若是1号的话再判断月份。根据上月的月份推算出昨天
若是其他直接减去1天就ok追问*年 你想得太简单啦。 那3月1号是不是还要判断闰年。。。
追答难道不判断?
windows 没直接获取昨天日期的api
是你想得太简单了.
热心网友
时间:2023-10-08 21:45
楼上是正解.
确实没有直接获取昨天日期的"智能API".
需要通过计算. 比如定义全局数据表示每月的最大天数.
int dayList[13] = { 28, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 注: dayList[0]特指闰年的2月天数, 其他dayList[1]到dayList[12]分别对应月数
SYSTEMTIME time;
GetSystemTime(&time)
if (time.wDay == 1) // 如果是1号
{
if ( time.wMonth==1)//若是一月, 那退回12月,否则-1
time.wMonth = 12;
else
time.wMonth--;
if(time.wYear % 4 == 0 && time.wMonth == 2) // 若是闰年且是2月.
time.wDay = dayList[0]; // 返回闰年2月的最后一天
else
time.wDay = dayList[time.wMonth]; // 返回指定月数的最后一天
}
else{
--time.wDay; // 不是1号的话直接-1
}
PS: 每月的天数应该没记错吧