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

相关推荐
岁忧4 小时前
(LeetCode 面试经典 150 题) 82. 删除排序链表中的重复元素 II (链表)
java·c++·leetcode·链表·面试·go
ikkkkkkkl5 小时前
LeetCode:347.前K个高频元素
数据结构·c++·算法·leetcode
源代码•宸5 小时前
C++高频知识点(十五)
c++·经验分享
阿巴~阿巴~7 小时前
构造函数:C++对象初始化的核心机制
开发语言·c++
效效超爱笑7 小时前
单链表应用实践
数据结构·c++·链表
啊阿狸不会拉杆8 小时前
《算法导论》第 10 章 - 基本数据结构
数据结构·c++·b树·算法·链表·排序算法
俄城杜小帅9 小时前
QML与C++交互的方式
开发语言·c++·交互
Vesan,11 小时前
无人机开发分享——基于行为树的无人机集群机载自主决策算法框架搭建及开发
c++·算法·决策树·无人机
R-G-B13 小时前
【24】C++实战篇——【 C++ 外部变量】 C++多个文件共用一个枚举变量,外部变量 extern,枚举外部变量 enum
c++·c++ 外部变量·c++文件共用一个枚举变量·外部变量 extern·枚举外部变量 enum
落羽的落羽13 小时前
【C++】哈希表原理与实现详解
数据结构·c++