c++ 通过API获取系统时间


void CTimeOperateDlg::OnBnClickedBtnTimezone()
{
	// TODO: 在此添加控件通知处理程序代码
	TIME_ZONE_INFORMATION timeZoneInfo;
	memset(&timeZoneInfo, NULL, sizeof(timeZoneInfo));
	DWORD dwRet = ::GetTimeZoneInformation(&timeZoneInfo);
	if (dwRet==TIME_ZONE_ID_INVALID)
	{
		MessageBox(_T("执行函数失败"));
		return;
	}

	CString strZoneType = _T("");
	CString strZoneTime = _T("");
	switch (dwRet)
	{
	case TIME_ZONE_ID_UNKNOWN:
		strZoneType = _T("未知时区");
		break;
	case TIME_ZONE_ID_STANDARD:
		strZoneType = _T("标准时间");
		break;
	case TIME_ZONE_ID_DAYLIGHT:
		strZoneType = _T("夏令时间");
		break;
	default:
		break;
	}
	if (timeZoneInfo.Bias<0) //东区
	{
		int nZoneTime = -timeZoneInfo.Bias / 60;
		strZoneTime.Format(_T("Standard Time(GMT+%02d:%02d)"), nZoneTime, nZoneTime);
	}
	else if (timeZoneInfo.Bias>0)//西区
	{
		int nZoneTime = timeZoneInfo.Bias / 60;
		strZoneTime.Format(_T("Standard Time(GMT%02d:%02d)"), nZoneTime, nZoneTime);
	}
	else if (timeZoneInfo.Bias == 0)//标准
	{
		strZoneTime.Format(_T("Standard Time(GMT)"));
	}
	GetDlgItem(IDC_STATIC_ZONETYPE)->SetWindowText(strZoneType);
	GetDlgItem(IDC_STATIC_TIMEZONE)->SetWindowText(strZoneTime);
}


void CTimeOperateDlg::OnBnClickedBtnGmttime()
{
	// TODO: 在此添加控件通知处理程序代码
	if (!m_bGMTTime)
	{
		SetTimer(1, 1000, NULL);
		m_bGMTTime = true;
		GetDlgItem(IDC_BTN_GMTTIME)->SetWindowText(_T("暂停"));
	}
	else
	{
		KillTimer(1);
		m_bGMTTime = false;
		GetDlgItem(IDC_BTN_GMTTIME)->SetWindowText(_T("获取格林威治时间"));
	}
}


void CTimeOperateDlg::OnBnClickedBtnLocaltime()
{
	// TODO: 在此添加控件通知处理程序代码
	if (!m_bLocalTime)
	{
		SetTimer(2, 1000, NULL);
		m_bLocalTime = true;
		GetDlgItem(IDC_BTN_GMTTIME)->SetWindowText(_T("暂停"));
	}
	else
	{
		KillTimer(2);
		m_bLocalTime = false;
		GetDlgItem(IDC_BTN_GMTTIME)->SetWindowText(_T("获取本地时间"));
	}
}


void CTimeOperateDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	if (nIDEvent==1)
	{
		if (m_bGMTTime)
		{
			SYSTEMTIME systemTime;
			memset(&systemTime, NULL, sizeof(SYSTEMTIME));
			::GetSystemTime(&systemTime);
			CString strGMTTime = _T("");
			strGMTTime.Format(_T("%4d-%02d-%02d %02d:%02d:%02d"), systemTime.wYear,
				systemTime.wMonth, systemTime.wDay, systemTime.wHour, systemTime.wMinute, systemTime.wSecond);
			GetDlgItem(IDC_STATIC_GMTTIME)->SetWindowText(strGMTTime);
		}
		
	}
	else if (nIDEvent==2)
	{
		if (m_bLocalTime)
		{
			SYSTEMTIME systemTime;
			memset(&systemTime, NULL, sizeof(SYSTEMTIME));
			::GetLocalTime(&systemTime);
			CString strLocalTime = _T("");
			strLocalTime.Format(_T("%4d-%02d-%02d %02d:%02d:%02d"), systemTime.wYear,
				systemTime.wMonth, systemTime.wDay, systemTime.wHour, systemTime.wMinute, systemTime.wSecond);
			GetDlgItem(IDC_STATIC_LOCALTIME)->SetWindowText(strLocalTime);
		}
	}

	CDialogEx::OnTimer(nIDEvent);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值