|
VC++/ATL中获取系统时间并与指定时间比较的实现方法
在VC++/ATL中获取系统时间并与指定时间比较的实现方法如下:
获取当前系统时间
使用GetLocalTime()函数填充SYSTEMTIME结构体:
SYSTEMTIME st;
GetLocalTime(&st); // 获取本地时间
时间格式化输出
通过CString的Format方法格式化为"HH:MM"字符串:
CString strTime;
strTime.Format(_T("%02d:%02d:%02d"),
st.wHour, st.wMinute, st.wSecond);
时间比较逻辑
创建比较函数判断是否达到目标时间:
BOOL IsTimeReached(const SYSTEMTIME& target) {
SYSTEMTIME current;
GetLocalTime(¤t);
// 比较时分秒
if(current.wHour > target.wHour) return TRUE;
if(current.wHour == target.wHour &&
current.wMinute > target.wMinute) return TRUE;
if(current.wHour == target.wHour &&
current.wMinute == target.wMinute &&
current.wSecond >= target.wSecond) return TRUE;
return FALSE;
}
完整使用示例
// 设置目标时间14:30:00
SYSTEMTIME target = {0};
target.wHour = 14;
target.wMinute = 30;
target.wSecond = 0;
if(IsTimeReached(target)) {
AfxMessageBox(_T("目标时间已到!"));
}
该方法通过逐级比较时分秒字段实现精确到秒的时间判断,适用于定时任务触发等场景。注意GetLocalTime()获取的是本地时区时间,若需UTC时间应使用GetSystemTime()。
|
|