C++获取本地时间常见方法汇总
1.跨平台方法
1.1方法一:手动暴力法
#includeusingnamespacestd; #include time_tt=time(NULL); structtm*stime=localtime(&t); chartmp[32]={NULL}; sprintf(tmp,"%04d-%02d-%02d%02d:%02d:%02d",1900+stime->tm_year,1+stime->tm_mon,stime->tm_mday,stime->tm_hour,stime->tm_min,stime->tm_sec); cout< 输出结果:
2015-04-0223:12:56
1.2方法二:投机取巧法
#includeusingnamespacestd; #include time_tt=time(0); chartmp[32]={NULL}; strftime(tmp,sizeof(tmp),"%Y-%m-%d%H:%M:%S",localtime(&t)); cout< 输出结果:
2015-04-0223:12:56
1.3方法三:简获日历时间法
#includeusingnamespacestd; #include #include time_ttm; time(&tm); chartmp[128]={NULL}; strcpy(tmp,ctime(&tm)); //或者 //structtm*stime=localtime(&tm); //strcpy(tmp,asctime(stime)); cout< 输出结果:
FriAug1423:19:422015
2.Windows平台获取时间
#includeusingnamespacestd; #include #include SYSTEMTIMEsys; GetLocalTime(&sys); chartmp[64]={NULL}; sprintf(tmp,"%4d-%02d-%02d%02d:%02d:%02dms:%03d",sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute,sys.wSecond,sys.wMilliseconds); cout< 输出结果:
2015-08-1423:41:56ms:354
3.Unix平台获取时间
#include#include structtimevalnow_time; gettimeofday(&now_time,NULL); time_ttt=now_time.tv_sec; tm*temp=localtime(&tt); chartime_str[32]={NULL}; sprintf(time_str,"%04d-%02d-%02d%02d:%02d:%02d",temp->tm_year+1900,temp->tm_mon+1,temp->tm_mday,temp->tm_hour,temp->tm_min,temp->tm_sec); cout< 输出时间:
2015-08-1423:41:56
4.需知知识点
(1)UTC(CoordinatedUniversalTime):协调世界时,又称世界标准时间。曾由格林威治平均时间(GreenwichMeanTime,GMT)提供,现在由原子钟提供。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。
(2)CalendarTime:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间,由time()函数获取。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。
(3)Epoch指的是一个特定的时间点:1970-01-0100:00:00UTC,即Unix时间戳。
(4)clocktick:时钟计时单元(而不把它叫做时钟滴答次数),一个时钟计时单元的时间长短是由CPU控制的。一个clocktick不是CPU的一个时钟周期,而是C/C++的一个基本计时单位。
在VC++的time.h文件中,我们可以找到相关的定义:#ifndef_CLOCK_T_DEFINED typedeflongclock_t; #define_CLOCK_T_DEFINED #endif #defineCLOCKS_PER_SEC((clock_t)1000) clock_tclock(void);这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计
时单元(clocktick)数,在MSDN中称之为挂钟时间(wal-clock)。//获取逝去时间 clock_tstart,finish; start=clock(); … finish=clock(); //逝去多少秒 longduration=(finish-start)/CLOCKS_PER_SEC;(5)time.h还提供了两种不同的函数将日历时间(一个用time_t表示的整数)转换为我们平时看到的年月日时分秒分开显示的时间格式tm:
structtm*gmtime(consttime_t*timer); structtm*localtime(consttime_t*timer);其中gmtime()函数是将日历时间转化为世界标准时间(即格林尼治时间),并返回一个tm结构体来保存这个时间,而localtime()函数是将日历时间转化为本地时间。比如现在用gmtime()函数获得的世界标准时间是2005年7月30日7点18分20秒,那么我用localtime()函数在中国地区获得的本地时间会比世界标准时间晚8个小时。
(6)分解时间就是以年、月、日、时、分、秒等分量保存的时间结构,在C/C++中是tm结构。我们可以使用mktime()函数将用tm结构表示的时间转化为日历时间。其函数原型如下:
time_tmktime(structtm*timeptr);该函数与gmtime和localtime函数具有相反的作用。
以上就是C++获取本地时间常见方法汇总的详细内容,更多关于C++获取本地时间的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。