VC-基础:VC中得到当前系统的时间和日期
2013-08-15 17:29
465 查看
得到当前时间的方法一般都是得到从1900年0点0分到现在的秒数,然后转为年月日时分秒的形式得到当前的时间(时分秒)。主要方法如下:
1)使用CRT函数
C++代码
2)使用SYSTEMTIME
C++代码
3)使用CTime
C++代码
A:
1 使用time_t time( time_t * timer ) 精确到秒,计算时间差使用double difftime( time_t timer1, time_t timer0 )
2 使用clock_t clock() 得到的是CPU时间 精确到1/CLOCKS_PER_SEC秒
3 使用DWORD GetTickCount() 得到的是系统运行的时间 精确到毫秒
4 如果使用MFC的CTime类,可以用CTime::GetCurrentTime() 精确到秒
5 要获取高精度时间,可以使用下面的方法,然后用两次计数器的差除以Frequency就得到时间。
6 还有David的文章中提到的方法:
Multimedia Timer Functions
The following functions are used with multimedia timers.
timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime
timeGetTime/timeKillEvent/TimeProc/timeSetEvent 精度很高
附:
GetTickCount()和GetCurrentTime()都只精确到55ms(1个tick就是55ms)。如果要精确到毫秒,应该使用timeGetTime函数或QueryPerformanceCounter函数。
GetSystemTime返回的是格林威志标准时间
GetLocalTime,和上面用法一样,返回的是你所在地区的时间,中国返回的是北京时间
VOID GetSystemTime(
LPSYSTEMTIME lpSystemTime // address of system time structure
);
函数就可以获得了,其中LPSYSTEMTIME 是个结构体
含:年,月,日,周几,小时,分,秒,毫秒。
//方案二 优点:能精确到毫秒级;缺点:使用了windows API
//方案三,优点:利用系统函数
可以改变电脑的时间设定
方案4:
另一:_strdate(tempstr);
另二: CTime
CString ==>CTime
时间差
1)使用CRT函数
C++代码
char szCurrentDateTime[32]; time_t nowtime; struct tm* ptm; time(&nowtime); ptm = localtime(&nowtime); sprintf(szCurrentDateTime, "%.4d-%.2d-%.2d %.2d:%.2d:%.2d", ptm->tm_year + 1900, ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
2)使用SYSTEMTIME
C++代码
char szCurrentDateTime[32]; SYSTEMTIME systm; GetLocalTime(&systm); sprintf(szCurrentDateTime, "%.4d-%.2d-%.2d %.2d:%.2d:%.2d", systm.wYear, systm.wMonth, systm.wDay, systm.wHour, systm.wMinute, systm.wSecond);
3)使用CTime
C++代码
char szCurrentDateTime[32]; CTime nowtime; nowtime = CTime::GetCurrentTime(); sprintf(szCurrentDateTime, "%.4d-%.2d-%.2d %.2d:%.2d:%.2d", nowtime.GetYear(), nowtime.GetMonth(), nowtime.GetDay(), nowtime.GetHour(), nowtime.GetMinute(), nowtime.GetSecond());
用VC++获取系统时间几种方法:
A:
1 使用time_t time( time_t * timer ) 精确到秒,计算时间差使用double difftime( time_t timer1, time_t timer0 )2 使用clock_t clock() 得到的是CPU时间 精确到1/CLOCKS_PER_SEC秒
3 使用DWORD GetTickCount() 得到的是系统运行的时间 精确到毫秒
4 如果使用MFC的CTime类,可以用CTime::GetCurrentTime() 精确到秒
5 要获取高精度时间,可以使用下面的方法,然后用两次计数器的差除以Frequency就得到时间。
BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency) //获取系统的计数器的频率 BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)//获取计数器的值
6 还有David的文章中提到的方法:
Multimedia Timer Functions
The following functions are used with multimedia timers.
timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime
timeGetTime/timeKillEvent/TimeProc/timeSetEvent 精度很高
附:
GetTickCount()和GetCurrentTime()都只精确到55ms(1个tick就是55ms)。如果要精确到毫秒,应该使用timeGetTime函数或QueryPerformanceCounter函数。
GetSystemTime返回的是格林威志标准时间
GetLocalTime,和上面用法一样,返回的是你所在地区的时间,中国返回的是北京时间
VOID GetSystemTime(
LPSYSTEMTIME lpSystemTime // address of system time structure
);
函数就可以获得了,其中LPSYSTEMTIME 是个结构体
含:年,月,日,周几,小时,分,秒,毫秒。
VC++获得当前系统时间的几种方案
//方案- 优点:仅使用C标准库;缺点:只能精确到秒级#include < time.h> #include < stdio.h> int main( void ) { time_t t = time( 0 ); char tmp[64]; strftime( tmp, sizeof(tmp), " %Y/%m/%d %X %A 本年第%j天 %z" , localtime(&t) ); puts( tmp ); return 0; }
//方案二 优点:能精确到毫秒级;缺点:使用了windows API
#include < windows.h> #include < stdio.h> int main( void ) { SYSTEMTIME sys; GetLocalTime( &sys ); printf( " M/d/d d:d:d.d 星期\n" ,sys.wYear,sys.wMonth,sys.wDay ,sys.wHour,sys.wMinute,sys.wSecond,sys.wMilliseconds ,sys.wDayOfWeek); return 0; }
//方案三,优点:利用系统函数
#include< stdlib.h> #include< iostream> using namespace std; void main(){ system(" time" ); }
可以改变电脑的时间设定
方案4:
#include< iostream> #include< ctime> using namespace std; int main() { time_t now_time; now_time = time(NULL); cout< < now_time; return 0; }
另一:_strdate(tempstr);
另二: CTime
CString CTestView::GetTime() { CTime CurrentTime=CTime::GetCurrentTime(); CString strTime; strTime.Format(" %d:%d:%d" ,CurrentTime.GetHour(), CurrentTime.GetMinute() ,CurrentTime.GetSecond()); return strTime; }
VC++ 时间类型转换: CTime, COleDateTime, time_t, CString
CTime==>CStringCTime time; time.GetCurrentTime(); CString str; str.Format("%s",time.Format("%y:%m:%d %H-%M-%S") //方法1 CString str; CTime t = CTime::GetCurrentTime(); str.Format("%d-%d-%d",t.GetYear(),t.GetMonth(),t.GetDay()); //方法2 CString strTime; CTime tTime = CTime::GetCurrentTime(); strTime = tTime.Format("%Y-%m-%d %H:%M:%S");
CString ==>CTime
//方法1
strCString="2003-10-27 6:24:37"; //CString--->COleDateTime COleVariant vtime(strCString); vtime.ChangeType(VT_DATE); COleDateTime time4=vtime; 5 //方法2 COleDateTime time1(1977,4,16,2,2,2); //COleDataTime--->CTime SYSTEMTIME systime; VariantTimeToSystemTime(time1, &systime); CTime tm(systime); 10 //方法3 time_t time2=tm.GetTime(); //CTime--->time_t COleDateTime time3(time2); //time_t--->COleDateTime
时间差
COleDateTime strFirst,strEnd; strFirst = COleDateTime(strFirst.GetYear(),strFirst.GetMonth(),strFirst.GetDay(),0,0,0); strEnd = COleDateTime(tmCurrent.GetYear(),tmCurrent.GetMonth(),tmCurrent.GetDay(),23,59,59); tspan= strEnd - strFirst;
相关文章推荐
- VC++得到当前系统时间日期 GetSystemTime()
- VC++得到当前系统时间日期 GetSystemTime()
- VC中得到当前的系统时间 日期
- VC中得到当前系统的时间和日期
- VC++获取当前系统时间日期 GetSystemTime()函数的用法
- [VC++]用CTime类得到当前日期、时间、星期,格式化(详细讲解)
- VC++获取当前系统时间日期 GetSystemTime()函数的用法
- sql得到当前系统时间得日期部分 获取具体日期 时间
- VC++获取当前系统时间日期 GetSystemTime()函数的用法
- VC++获取当前系统时间日期 GetSystemTime()函数的用法
- VC++获取当前系统时间日期 GetSystemTime()函数的用法
- VC++]用CTime类得到当前日期、时间、星期,格式化(详细讲解)
- iOS开发-基础:获取系统当前日期,断点输出时间
- vc++ 根据系统时间得到今后一周日期
- VC++获取当前系统时间日期 GetSystemTime()函数的用法
- 类库: vc下如何按照当前系统的日期、时间格式显示时间
- sql得到当前系统时间得 日期部分
- sql得到当前系统时间得 日期部分
- VC++获取当前系统时间日期 GetSystemTime()函数的用法
- VC++获得当前系统日期和时间问题汇总