VC++获取当前系统时间日期 GetSystemTime()函数的用法
2016-07-16 12:14
821 查看
VC++获取当前系统时间日期 GetSystemTime()函数的用法
呵呵 获取时间 函数 每次都是一个 头疼的问题 , 写法也是 千变万化 等于我这总不记得一个函数用法的
人 天天写程序 就是百度 所以效率 低 后来 发现如果 用过的东西 都记下来 该多好啊 。 这样 就好找多了
来看看 vc 中 获取 系统时间 操作的 函数用法大全把
[cpp] view
plain copy
一、使用MFC可以用以下代码得到:
CTime time = CTime::GetCurrentTime(); ///构造CTime对象
int m_nYear = time.GetYear(); ///年
int m_nMonth = time.GetMonth(); ///月
int m_nDay = time.GetDay(); ///日
int m_nHour = time.GetHour(); ///小时
int m_nMinute = time.GetMinute(); ///分钟
int m_nSecond = time.GetSecond(); ///秒
// CTime time = CTime::GetCurrentTime();
//CString strTime = time.Format("%Y-%m-%d %H:%M:%S"); //Format("%I:%M:%S %p, %A, %B %d, %Y")
我们还可以用CTime::Format函数将CTime对象转换为字符串对象
例如:
CString m_strTime = time.Format("%Y-%m-%d %H:%M:%S");
运行结果:m_strTime为 2001-8-1 12:11:05
函数GetSystemTime和GetLocalTime声明如下:
WINBASEAPI
VOID
WINAPI
GetSystemTime(
__out LPSYSTEMTIME lpSystemTime
);
WINBASEAPI
VOID
WINAPI
GetLocalTime(
__out LPSYSTEMTIME lpSystemTime
);
lpSystemTime是获取系统时间的结构。
调用函数的例子如下:
//获取系统时间。
//蔡军生 2007/11/11 QQ:9073204 深圳
void TestSystem(void)
{
//获取系统的UTC时间。
SYSTEMTIME stUTC;
::GetSystemTime(&stUTC);
//显示时间的间隔。
const int nBufSize = 256;
TCHAR chBuf[nBufSize];
wsprintf(chBuf,_T("UTC: %u/%u/%u %u:%u:%u:%u %d\r\n"),
stUTC.wYear, stUTC.wMonth, stUTC.wDay,
stUTC.wHour, stUTC.wMinute, stUTC.wSecond,
stUTC.wMilliseconds,stUTC.wDayOfWeek);
OutputDebugString(chBuf);
//获取当地的时间。
SYSTEMTIME stLocal;
::GetLocalTime(&stLocal);
//显示时间的间隔。
wsprintf(chBuf,_T("Local: %u/%u/%u %u:%u:%u:%u %d\r\n"),
stLocal.wYear, stLocal.wMonth, stLocal.wDay,
stLocal.wHour, stLocal.wMinute, stLocal.wSecond,
stLocal.wMilliseconds,stLocal.wDayOfWeek);
OutputDebugString(chBuf);
}
上面两个函数在我测试时输出的结果,如下:
UTC: 2007/11/11 1:53:1:46 0
Local: 2007/11/11 9:53:1:46 0
strTime.Format(_T("%d-%d-%d %d:%d:%d.%d "),stLocal.wYear,stLocal.wMonth,stLocal.wDay,stLocal.wHour,stLocal.wMinute,stLocal.wSecond,stLocal.wMilliseconds); //时间显示
VC获取系统时间、程序运行时间
1.使用CTime类
CString str;
//获取系统时间
CTime tm;
tm=CTime::GetCurrentTime();
str=tm.Format("现在时间是%Y年%m月%d日 %X");
MessageBox(str,NULL,MB_OK);
2.得到系统时间日期(使用GetLocalTime)
SYSTEMTIME st;
CString strDate,strTime;
GetLocalTime(&st);
strDate.Format("%4d-%2d-%2d",st.wYear,st.wMonth,st.wDay);
strTime.Format("%2d:%2d:%2d",st.wHour,st.wMinute,st.wSecond) ;
AfxMessageBox(strDate);
AfxMessageBox(strTime);
3.使用GetTickCount
//获取程序运行时间
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);
4.使用time_t time( time_t * timer ) 精确到秒
计算时间差使用double difftime( time_t timer1, time_t timer0
5.使用DWORD GetTickCount() 得到的是系统运行的时间 精确到毫秒
6.要获取高精度时间,可以使用
BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)获取系统的计数器的频率
BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)获取计数器的值
然后用两次计数器的差除以Frequency就得到时间。
7.还有David的文章中提到的方法:
Multimedia Timer Functions
The following functions are used with multimedia timers.
timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime
timeGetTime/timeKillEvent/TimeProc/timeSetEvent 精度很高
Q:
GetTickCount()函数,说是毫秒记数,是真的吗,还是精确到55毫秒?
A:
GetTickCount()和GetCurrentTime()都只精确到55ms(1个tick就是55ms)。如果要精确到毫秒,应该使用timeGetTime函数或QueryPerformanceCounter函数。具体例子可以参考QA001022 "VC++中使用高精度定时器"、QA001813 "如何在Windows实现准确的定时"和QA004842 "timeGetTime函数延时不准"。
Q:
vc++怎样获取系统时间,返回值是什么类型的变量呢?
A:
GetSystemTime返回的是格林威志标准时间
VOID GetSystemTime(
LPSYSTEMTIME lpSystemTime // address of system time structure
);
函数就可以获得了,其中LPSYSTEMTIME 是个结构体
含:年,月,日,周几,小时,分,秒,毫秒。
呵呵 获取时间 函数 每次都是一个 头疼的问题 , 写法也是 千变万化 等于我这总不记得一个函数用法的
人 天天写程序 就是百度 所以效率 低 后来 发现如果 用过的东西 都记下来 该多好啊 。 这样 就好找多了
来看看 vc 中 获取 系统时间 操作的 函数用法大全把
[cpp] view
plain copy
一、使用MFC可以用以下代码得到:
CTime time = CTime::GetCurrentTime(); ///构造CTime对象
int m_nYear = time.GetYear(); ///年
int m_nMonth = time.GetMonth(); ///月
int m_nDay = time.GetDay(); ///日
int m_nHour = time.GetHour(); ///小时
int m_nMinute = time.GetMinute(); ///分钟
int m_nSecond = time.GetSecond(); ///秒
// CTime time = CTime::GetCurrentTime();
//CString strTime = time.Format("%Y-%m-%d %H:%M:%S"); //Format("%I:%M:%S %p, %A, %B %d, %Y")
我们还可以用CTime::Format函数将CTime对象转换为字符串对象
例如:
CString m_strTime = time.Format("%Y-%m-%d %H:%M:%S");
运行结果:m_strTime为 2001-8-1 12:11:05
函数GetSystemTime和GetLocalTime声明如下:
WINBASEAPI
VOID
WINAPI
GetSystemTime(
__out LPSYSTEMTIME lpSystemTime
);
WINBASEAPI
VOID
WINAPI
GetLocalTime(
__out LPSYSTEMTIME lpSystemTime
);
lpSystemTime是获取系统时间的结构。
调用函数的例子如下:
//获取系统时间。
//蔡军生 2007/11/11 QQ:9073204 深圳
void TestSystem(void)
{
//获取系统的UTC时间。
SYSTEMTIME stUTC;
::GetSystemTime(&stUTC);
//显示时间的间隔。
const int nBufSize = 256;
TCHAR chBuf[nBufSize];
wsprintf(chBuf,_T("UTC: %u/%u/%u %u:%u:%u:%u %d\r\n"),
stUTC.wYear, stUTC.wMonth, stUTC.wDay,
stUTC.wHour, stUTC.wMinute, stUTC.wSecond,
stUTC.wMilliseconds,stUTC.wDayOfWeek);
OutputDebugString(chBuf);
//获取当地的时间。
SYSTEMTIME stLocal;
::GetLocalTime(&stLocal);
//显示时间的间隔。
wsprintf(chBuf,_T("Local: %u/%u/%u %u:%u:%u:%u %d\r\n"),
stLocal.wYear, stLocal.wMonth, stLocal.wDay,
stLocal.wHour, stLocal.wMinute, stLocal.wSecond,
stLocal.wMilliseconds,stLocal.wDayOfWeek);
OutputDebugString(chBuf);
}
上面两个函数在我测试时输出的结果,如下:
UTC: 2007/11/11 1:53:1:46 0
Local: 2007/11/11 9:53:1:46 0
strTime.Format(_T("%d-%d-%d %d:%d:%d.%d "),stLocal.wYear,stLocal.wMonth,stLocal.wDay,stLocal.wHour,stLocal.wMinute,stLocal.wSecond,stLocal.wMilliseconds); //时间显示
VC获取系统时间、程序运行时间
1.使用CTime类
CString str;
//获取系统时间
CTime tm;
tm=CTime::GetCurrentTime();
str=tm.Format("现在时间是%Y年%m月%d日 %X");
MessageBox(str,NULL,MB_OK);
2.得到系统时间日期(使用GetLocalTime)
SYSTEMTIME st;
CString strDate,strTime;
GetLocalTime(&st);
strDate.Format("%4d-%2d-%2d",st.wYear,st.wMonth,st.wDay);
strTime.Format("%2d:%2d:%2d",st.wHour,st.wMinute,st.wSecond) ;
AfxMessageBox(strDate);
AfxMessageBox(strTime);
3.使用GetTickCount
//获取程序运行时间
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);
4.使用time_t time( time_t * timer ) 精确到秒
计算时间差使用double difftime( time_t timer1, time_t timer0
5.使用DWORD GetTickCount() 得到的是系统运行的时间 精确到毫秒
6.要获取高精度时间,可以使用
BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)获取系统的计数器的频率
BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)获取计数器的值
然后用两次计数器的差除以Frequency就得到时间。
7.还有David的文章中提到的方法:
Multimedia Timer Functions
The following functions are used with multimedia timers.
timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime
timeGetTime/timeKillEvent/TimeProc/timeSetEvent 精度很高
Q:
GetTickCount()函数,说是毫秒记数,是真的吗,还是精确到55毫秒?
A:
GetTickCount()和GetCurrentTime()都只精确到55ms(1个tick就是55ms)。如果要精确到毫秒,应该使用timeGetTime函数或QueryPerformanceCounter函数。具体例子可以参考QA001022 "VC++中使用高精度定时器"、QA001813 "如何在Windows实现准确的定时"和QA004842 "timeGetTime函数延时不准"。
Q:
vc++怎样获取系统时间,返回值是什么类型的变量呢?
A:
GetSystemTime返回的是格林威志标准时间
VOID GetSystemTime(
LPSYSTEMTIME lpSystemTime // address of system time structure
);
函数就可以获得了,其中LPSYSTEMTIME 是个结构体
含:年,月,日,周几,小时,分,秒,毫秒。
相关文章推荐
- Cpp环境【NOIP2012模拟题】【Vijos3013】拦截匪徒
- C语言以数据块的形式读写文件实例代码
- C语言二进制思想以及数据的存储
- 在scanf里面使用换行符\n是一种什么体验?scanf("%d\n",&a);
- c语言 ascii 和 压缩bcd 码之间的相互转换
- C++动态类型转换、强制类型转换、静态类型转换举例分析
- 训练题 连接格点(并查集运用) 解题报告
- Remove Duplicates from Sorted List
- 【poj 2018】0/1分数规划[1]
- Floyd算法 C++
- Search in Rotated Sorted Array
- C语言的运算符、位操作
- C语言double和float 实例分析
- 初学const总结
- c++遇到问题
- c语言 main函数
- C++ 多继承和虚继承的内存布局
- C语言中strlen、strcpy、strncpy、strcat、strnact、strcmp、memcpy函数的实现
- stl学习(一)优先队列
- C语言转义字符实例详解