【46】MFC入门到精通——MFC显示实时时间,获取系统当前时间GetCurrentTime()、获取本地时间GetLocalTime()

文章目录

1 MFC获取时间方法

方法一:获取系统当前时间GetCurrentTime()

cpp 复制代码
//方法一,获取系统当前时间
int CSerialPortDlg::Current_Time()
{
	//方法一,获取系统当前时间

	CTime time;//实例一个时间对象
	CString strTime;//显示时间
	time = CTime::GetCurrentTime();//获取系统当前时间
	//strTime =  time.Format(_T("%Y - %m - %d %H: %M : %S"));//将time对象中的时间信息(年,月,日,时,分,秒)存储到CString变量中进行显示
	strTime = time.Format(_T("当前时间 %H:%M:%S"));

	//显示
	SetDlgItemText(IDC_STATIC_CurrentTime, strTime);

	return 0;
}

方法二:获取本地时间GetLocalTime()

cpp 复制代码
int CSerialPortDlg::Current_Time()
{
    //方法二,获取本地时间精确到毫秒     
	CString strTime;
	SYSTEMTIME lpsystime;
	GetLocalTime(&lpsystime);
	//strTime.Format(L"%d-%d-%d %d:%d:%d:%d", lpsystime.wYear, lpsystime.wMonth, lpsystime.wDay, lpsystime.wHour,lpsystime.wMinute, lpsystime.wSecond, lpsystime.wMilliseconds);
	strTime.Format(L"当前时间 %d:%d:%d", lpsystime.wHour,lpsystime.wMinute, lpsystime.wSecond);

    //显示
	SetDlgItemText(IDC_STATIC_CurrentTime, strTime);

	return 0;
}

使用GetTickCount()获取程序运行时间

cpp 复制代码
long t1=GetTickCount();//程序段开始前取得系统运行时间(ms)   
Sleep(500); long t2=GetTickCount();//程序段结束后取得系统运行时间(ms)   
str.Format("time:%dms",t2-t1);//前后之差即 程序运行时间   
AfxMessageBox(str);//获取系统运行时间   
long t=GetTickCount();   
CString str,str1;   
str1.Format("系统已运行 %d时",t/3600000);   
str=str1; t%=3600000;   
str1.Format("%d分",t/60000);   
str+=str1; t%=60000;   
str1.Format("%d秒",t/1000);   
str+=str1; 
AfxMessageBox(str);

2 MFC显示实时时间 使用方法

2.1 获取时间

cpp 复制代码
//方法一,获取系统当前时间
int CSerialPortDlg::Current_Time()
{
	//方法一,获取系统当前时间

	CTime time;//实例一个时间对象
	CString strTime;//显示时间
	time = CTime::GetCurrentTime();//获取系统当前时间
	//strTime =  time.Format(_T("%Y - %m - %d %H: %M : %S"));//将time对象中的时间信息(年,月,日,时,分,秒)存储到CString变量中进行显示
	strTime = time.Format(_T("当前时间 %H:%M:%S"));

	//显示
	SetDlgItemText(IDC_STATIC_CurrentTime, strTime);

	return 0;
}

2.2 类向导 添加定时器函数 OnTimer

2.3 初始化 设置定时器

OnInitDialog();中添加代码

cpp 复制代码
	//显示当前时间
	Current_Time();
	//1秒触发一次的定时器 
	SetTimer(1, 1000, NULL);

2.4 定时器函数 调用 获取时间函数

cpp 复制代码
void CSerialPortDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值

	if (nIDEvent == 1) {
		Current_Time();
	}
	CDialogEx::OnTimer(nIDEvent);
}

2.5 效果演示

参考链接 :

MFC--在窗口状态栏设置时间显示

MFC中设置静态文本框的时间

MFC获取时间的几种方法

相关推荐
王老师青少年编程15 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【哈夫曼贪心】:合并果子
c++·算法·贪心·csp·信奥赛·哈夫曼贪心·合并果子
叼烟扛炮15 小时前
C++第二讲:类和对象(上)
数据结构·c++·算法·类和对象·struct·实例化
样例过了就是过了17 小时前
LeetCode热题100 最长公共子序列
c++·算法·leetcode·动态规划
谭欣辰17 小时前
C++ 排列组合完整指南
开发语言·c++·算法
橙子也要努力变强18 小时前
信号捕捉底层机制-机理篇2
linux·服务器·c++
盐焗鹌鹑蛋18 小时前
【C++】stack和queue类
c++
郝学胜-神的一滴19 小时前
罗德里格斯旋转公式(Rodrigues‘ Rotation Formula)完整推导
c++·unity·godot·图形渲染·three.js·unreal
lzh2004091919 小时前
深入理解进程:从PCB内核结构到写时拷贝的底层实战
linux·c++
aseity20 小时前
跨平台项目中QString 与 非Qt 跨平台动态库在字符集上的一个实用的互操作约定.
c++·经验分享
CN-Dust20 小时前
【C++】while语句例题专题
数据结构·c++·算法