【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 小时前
虚函数表:C++ 多态背后的那个男人
c++
端平入洛2 天前
delete又未完全delete
c++
端平入洛3 天前
auto有时不auto
c++
哇哈哈20214 天前
信号量和信号
linux·c++
多恩Stone4 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
蜡笔小马4 天前
21.Boost.Geometry disjoint、distance、envelope、equals、expand和for_each算法接口详解
c++·算法·boost
超级大福宝4 天前
N皇后问题:经典回溯算法的一些分析
数据结构·c++·算法·leetcode
weiabc4 天前
printf(“%lf“, ys) 和 cout << ys 输出的浮点数格式存在细微差异
数据结构·c++·算法
问好眼4 天前
《算法竞赛进阶指南》0x01 位运算-3.64位整数乘法
c++·算法·位运算·信息学奥赛
yyjtx4 天前
DHU上机打卡D31
开发语言·c++·算法