201上位机VC MFC设置与获取系统当前时间
201上位机VC MFC设置与获取系统当前时间 功能展示 系统时间的获取与设置以及指定两时间的时间差的计算也是常用到的功能,当前例程实现电脑当前系统时间的设置与获得及时间差的计算,程序地结果都以对话框形式显示,注意设置时间后,得手动设置回正确的时间,效果如图; 要点提示 系统时间的获取可以用函数GetLocalTime()设置可以用函数SetLocalTime(),在WIN7中时间设置还得获得系统权限(当前例程已获取); etLocalTime()函数原型: BOOL WINAPI SetLocalTime( _In_constSYSTEMTIME *lpSystemTime); 参数定义: lpSystemTime 一个SYSTEMTIME结构的指针,包含了新的本地日期和时间。SYSTEMTIME结构wDayOfWeek成员被忽略。 返回值: 如果函数调用成功,则返回值为非零值。 可调用GetLastError函数获取具体错误代码 时间差的获取可以用类Ctime的实例相减,相减的结果类型为CTimeSpan类; 实现功能 1.新建基于对话框的应用程序 2.拖拽三个按钮控件<设置系统当前时间><获取当前系统时间><指定两时间差计算>关联函数 - void CGkbc8Dlg::OnSettime()
- {
- SYSTEMTIME SysTime;
- ::memset(&SysTime,0,sizeof(SYSTEMTIME));
- SysTime.wYear=2015;
- SysTime.wMonth=11;
- SysTime.wDay=12;
- SysTime.wHour=13;
- SysTime.wMinute=14;
- SysTime.wSecond=15;
- if(::SetLocalTime(&SysTime))
- MessageBox("设置系统当前时间成功!","提示",MB_OK);
- else
- MessageBox("设置系统当前时间失败","提示",MB_OK);
- }
- void CGkbc8Dlg::OnGettime()
- {
- SYSTEMTIME SysTime;
- CString StrCurTime;
- ::GetLocalTime(&SysTime);
- StrCurTime.Format("当前系统时间为:%d年%d月%d日%d时%d分%d秒",SysTime.wYear,SysTime.wMonth,
- SysTime.wDay,SysTime.wHour,SysTime.wMinute,SysTime.wSecond);
- MessageBox(StrCurTime,"信息提示",MB_OK);
- }
复制代码- void CGkbc8Dlg::OnGet()
- {
- CTime Time1(2015,12,11,10,9,8);
- //Sleep(1000);
- CTime Time2=CTime::GetCurrentTime();
- CTimeSpan Span=Time2-Time1;
- CString StrInfo=Time1.Format("第一次时间为:%Y年%M月%D日%H时%M分%S秒");
- StrInfo+="\n";
- StrInfo+=Time2.Format("第二次时间为:%Y年%M月%D日%H时%M分%S秒");
- StrInfo+="\n";
- StrInfo+=Span.Format("两次时间差为:%D日%H时%M分%S秒");
- MessageBox(StrInfo,"信息提示",MB_OK);
- }
复制代码要注意是时间的设置在WIN7系统上得获取管理员权限才能设置成功:将根目录下res\\AppName.exe.manifest加载到工程中(此文件可用VS2010以上版本生成)资源文件夹命名设置为24,资源ID设置为1,独立双击生成的程序运行测试; 我们来演示下功能实现的整个过程
|