【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获取时间的几种方法

相关推荐
干啥啥不行,秃头第一名3 分钟前
C++与机器学习框架
开发语言·c++·算法
永远睡不够的入8 分钟前
C++庖丁解牛:深入理解多态:从虚函数表到底层实现
开发语言·c++
Z059 分钟前
C++类和对象(中)——拷贝构造函数
c++
仰泳的熊猫11 分钟前
题目2580:蓝桥杯2020年第十一届省赛真题-分类计数
数据结构·c++·算法·蓝桥杯
qq_3349031511 分钟前
C++与人工智能框架
开发语言·c++·算法
2401_8914821713 分钟前
C++中的状态模式
开发语言·c++·算法
TTTrees19 分钟前
C++学习笔记(32):智能指针(weak_ptr)
c++
qq_4176950521 分钟前
基于C++的区块链实现
开发语言·c++·算法
2401_8942419225 分钟前
基于C++的反射机制探索
开发语言·c++·算法
cui_ruicheng27 分钟前
C++ 数据结构进阶:unordered_map 与 unordered_set源码分析与实现
数据结构·c++·算法·哈希算法