




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、Linux下常用时间类型Linux下常用时间类型有四种:time_t、struct tm、struct timeval、struct timespec1.1 time_t时间类型time_t类型在time.h中定义:cpp view plaincopyprint?1. #ifndef _TIME_T 2. #define _TIME_T 3. typedef long time_t; 4. #endif #ifndef _TIME_T#define _TIME_Ttypedef long time_t;#endif可见,time_t实际是一个长整型。其值表示为从UTC(coordinate
2、d universal time)时间1970年1月1日00时00分00秒(也称为Linux系统的Epoch时间)到当前时刻的秒数。由于time_t类型长度的限制,它所表示的时间不能晚于2038年1月19日03时14分07秒(UTC)。为了能够表示更久远的时间,可用64位或更长的整形数来保存日历时间,这里不作详述。使用time()函数获取当前时间的time_t值,使用ctime()函数将time_t转为当地时间字符串。备注:UTC时间有时也称为GMT时间,其实UTC和GMT两者几乎是同一概念。它们都是指格林尼治标准时间,只不过UTC的称呼更为正式一点。两者区别在于前者是天文上的概念,而后者是基
3、于一个原子钟。1.2 struct tm时间类型tm结构在time.h中定义:cpp view plaincopyprint?1. #ifndef _TM_DEFINED 2. struct tm 3. int tm_sec; /*秒 - 取值区间为0, 59*/ 4. int tm_min; /*分 - 取值区间为0, 59*/ 5. int tm_hour; /*时 - 取值区间为0, 23*/ 6. int tm_mday; /*日 - 取值区间为1, 31*/ 7. int tm_mon; /*月份 - 取值区间为0, 11*/ 8. int tm_year; /*年份 - 其值为19
4、00年至今年数*/ 9. int tm_wday; /*星期 - 取值区间0, 6,0代表星期天,1代表星期1,以此类推*/ 10. int tm_yday; /*从每年的1月1日开始的天数-取值区间为0, 365,0代表1月1日*/ 11. int tm_isdst; /*夏令时标识符,使用夏令时,tm_isdst为正,不使用夏令时,tm_isdst为0,不了解情况时,tm_isdst为负*/ 12. ; 13. #define _TM_DEFINED 14. #endif #ifndef _TM_DEFINEDstruct tm int tm_sec; /*秒 - 取值区间为0, 59*/
5、 int tm_min; /*分 - 取值区间为0, 59*/ int tm_hour; /*时 - 取值区间为0, 23*/ int tm_mday; /*日 - 取值区间为1, 31*/ int tm_mon; /*月份 - 取值区间为0, 11*/ int tm_year; /*年份 - 其值为1900年至今年数*/ int tm_wday; /*星期 - 取值区间0, 6,0代表星期天,1代表星期1,以此类推*/ int tm_yday; /*从每年的1月1日开始的天数-取值区间为0, 365,0代表1月1日*/ int tm_isdst; /*夏令时标识符,使用夏令时,tm_isds
6、t为正,不使用夏令时,tm_isdst为0,不了解情况时,tm_isdst为负*/;#define _TM_DEFINED#endifANSI C标准称使用tm结构的这种时间表示为分解时间(broken-down time)。使用gmtime( )和localtime( )可将time_t时间类型转换为tm结构体;使用mktime( )将tm结构体转换为time_t时间类型;使用asctime( )将struct tm转换为字符串形式。1.3 struct timeval时间类型timeval结构体在time.h中定义:cpp view plaincopyprint?1. Struct tmi
7、eval 2. time_t tv_sec; /*秒s*/ 3. suseconds_t tv_usec; /*微秒us*/ 4. ; Struct tmieval time_t tv_sec; /*秒s*/ suseconds_t tv_usec; /*微秒us*/;设置时间函数settimeofday( )与获取时间函数gettimeofday( )均使用该事件类型作为传参。1.4 struct timespec时间类型timespec结构体在time.h定义:cpp view plaincopyprint?1. struct timespec 2. time_t tv_sec; /*秒s
8、*/ 3. long tv_nsec; /*纳秒ns*/ 4. ; struct timespec time_t tv_sec; /*秒s*/ long tv_nsec; /*纳秒ns*/;2、Linux下常用时间函数Linux下常用时间函数有:time( )、ctime( )、gmtime( )、localtime( )、mktime( )、asctime( )、difftime( )、gettimeofday( )、settimeofday( )2.1 time( )函数头文件:#include <time.h>函数定义:time_t time(time_t *timer)功能
9、描述:该函数返回从1970年1月1日00时00分00秒至今所经过的秒数。如果time_t *timer非空指针,函数也会将返回值存到timer指针指向的内存。返回值:成功则返回秒数,失败则返回(time_t)-1)值,错误原因存于errno中。例:cpp view plaincopyprint?1. time_t seconds; 2. seconds = time(time_t *)NULL); time_t seconds;seconds = time(time_t *)NULL);2.2 ctime( )函数头文件:#include <time.h>函数定义:char *ct
10、ime(const time_t *timep);功能描述:ctime( )将参数timep指向的time_t时间信息转换成实际所使用的时间日期表示方法,并以字符串形式返回。字符串格式为:"Wed Jun 20 21:00:00 2012n"。例:cpp view plaincopyprint?1. time_t timep; 2. tmep = time(NULL); 3. printf("%sn", ctime(&timep); time_t timep;tmep = time(NULL);printf("%sn", ct
11、ime(&timep);2.3 gmtime( )函数头文件:#include <time.h>函数定义:struct tm *gmtime(const time_t *timep)功能描述:gmtime( )将参数timep指向的time_t时间信息转换成以tm结构体表示的GMT时间信息,并以struct tm*指针返回。GMT:GMT是中央时区,北京在东8区,相差8个小时,所以北京时间=GMT时间+8小时。例:cpp view plaincopyprint?1. int main(void) 2. 3. char *wday = "Sun", &qu
12、ot;Mon", "Tue", "Wed", "Thu", "Fri", "Sat" 4. time_t timep; 5. struct tm *p_tm; 6. timep = time(NULL); 7. p_tm = gmtime(&timep); /*获取GMT时间*/ 8. printf("%d-%d-%d ", (p_tm->tm_year+1900), (p_tm->mon+1), p_tm->tm_mday); 9. pr
13、intf("%s %d:%d:%dn", wdayp_tm->tm_wday, p_tm->tm_hour, p_tm->tm_min, p_tm->tm_sec); 10. int main(void) char *wday = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" time_t timep; struct tm *p_tm; timep = time(
14、NULL); p_tm = gmtime(&timep); /*获取GMT时间*/ printf("%d-%d-%d ", (p_tm->tm_year+1900), (p_tm->mon+1), p_tm->tm_mday); printf("%s %d:%d:%dn", wdayp_tm->tm_wday, p_tm->tm_hour, p_tm->tm_min, p_tm->tm_sec);2.4 localtime( )函数头文件:#include <time.h>函数定义:struc
15、t tm *localtime(const time_t *timep);功能描述:localtime( )将参数timep指向的time_t时间信息转换成以tm结构体表示的本地时区时间(如北京时间= GMT+小时)。例:cpp view plaincopyprint?1. int main(void) 2. 3. char *wday = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" 4. time_t
16、timep; 5. struct tm *p_tm; 6. timep = time(NULL); 7. p_tm = localtime(&timep); /*获取本地时区时间*/ 8. printf("%d-%d-%d ", (p_tm->tm_year+1900), (p_tm->mon+1), p_tm->tm_mday); 9. printf("%s %d:%d:%dn", wdayp_tm->tm_wday, p_tm->tm_hour, p_tm->tm_min, p_tm->tm_sec)
17、; 10. return 0; 11. int main(void) char *wday = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" time_t timep; struct tm *p_tm; timep = time(NULL); p_tm = localtime(&timep); /*获取本地时区时间*/ printf("%d-%d-%d ", (p_tm->
18、tm_year+1900), (p_tm->mon+1), p_tm->tm_mday); printf("%s %d:%d:%dn", wdayp_tm->tm_wday, p_tm->tm_hour, p_tm->tm_min, p_tm->tm_sec); return 0;2.5 mktime( )函数头文件:#include <time.h>函数定义:time_t mktime(struct tm *p_tm);功能描述:mktime( )将参数p_tm指向的tm结构体数据转换成从1970年1月1日00时00分00秒
19、至今的GMT时间经过的秒数。例:cpp view plaincopyprint?1. int main(void) 2. 3. time_t timep: 4. struct tm *p_tm; 5. timep = time(NULL); 6. pintf("time( ):%dn", timep); 7. p_tm = local(&timep); 8. timep = mktime(p_tm); 9. printf("time( )->localtime( )->mktime( ):%dn", timep); 10. retur
20、n 0; 11. int main(void) time_t timep: struct tm *p_tm; timep = time(NULL); pintf("time( ):%dn", timep); p_tm = local(&timep); timep = mktime(p_tm); printf("time( )->localtime( )->mktime( ):%dn", timep); return 0;2.6 asctime( )函数头文件:#include <time.h>函数定义:char *asct
21、ime(const struct tm *p_tm);功能描述:asctime( )将参数p_tm指向的tm结构体数据转换成实际使用的时间日期表示方法,并以字符串形式返回(与ctime函数相同)。字符串格式为:"Wed Jun 20 21:00:00 2012n"。例:cpp view plaincopyprint?1. int main(void) 2. 3. time_t timep; 4. timep = time(NULL); 5. printf("%sn", asctime(gmtime(&timep); 6. return 0; 7.
22、 int main(void) time_t timep; timep = time(NULL); printf("%sn", asctime(gmtime(&timep); return 0;2.7 difftime( )函数头文件:#include <time.h>函数定义:double difftime(time_t timep1, time_t timep2);功能描述:difftime( )比较参数timep1和timep2时间是否相同,并返回之间相差秒数。例:cpp view plaincopyprint?1. int main(void)
23、2. 3. time_t timep1, timep2; 4. timep1 = time(NULL); 5. sleep(2); 6. timep2 = time(NULL); 7. printf("the difference is %f secondsn", difftime(timep1, timep2); 8. return 0; 9. int main(void) time_t timep1, timep2; timep1 = time(NULL); sleep(2); timep2 = time(NULL); printf("the differen
24、ce is %f secondsn", difftime(timep1, timep2); return 0;2.8 gettimeofday( )函数头文件:#include <sys/time.h>#include <unistd.h>函数定义:int gettimeofday(struct timeval *tv, struct timezone *tz);功能描述:gettimeofday( )把目前的时间信息存入tv指向的结构体,当地时区信息则放到tz指向的结构体。struct timezone原型:cpp view plaincopyprint?1
25、. struct timezone 2. int tz_minuteswest; /*miniutes west of Greenwich*/ 3. int tz_dsttime; /*type of DST correction*/ 4. ; struct timezone int tz_minuteswest; /*miniutes west of Greenwich*/ int tz_dsttime; /*type of DST correction*/;例:cpp view plaincopyprint?1. struct timeval tv; 2. struct timeval t
26、z; 3. gettimeofday(&tv, &tz); struct timeval tv;struct timeval tz;gettimeofday(&tv, &tz);附:使用time函数族获取时间并输出指定格式字符串例子(strftime( )函数):cpp view plaincopyprint?1. int main(void) 2. 3. char strtime20 = 0; 4. time_t timep; 5. struct tm *p_tm; 6. timep = time(NULL); 7. p_tm = localtime(&
27、;timep); 8. strftime(strtime, sizeof(strtime), "%Y-%m-%d %H:%M:%S", p_tm); 9. return 0; 10. int main(void) char strtime20 = 0; time_t timep; struct tm *p_tm; timep = time(NULL); p_tm = localtime(&timep); strftime(strtime, sizeof(strtime), "%Y-%m-%d %H:%M:%S", p_tm); return 0;2.9 settimeofday( )函数头文件:#include <sys/time.h&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二次根式的性质教学设计
- 医疗废弃物处理的可持续发展路径
- 区块链技术在智能合约中的应用实例
- 健康产业人才激励机制研究报告
- 健康教育与生活方式改变的关联性研究
- 周围血管病的临床护理
- 医疗健康数据隐私保护HIPAA的核心要点
- 2025年5月山西省晋中市高考适应训练考试物理试卷(含答案)
- 企业出兑合同范例
- 1000元租房合同范例
- 人教版七年级生物下册《血流的管道-血管》评课稿
- 装配式建筑施工技术PPT(高职)完整全套教学课件
- 涉诈风险账户审查表
- 门诊办运用PDCA提高门诊预约挂号率品管圈成果汇报
- 市场开拓委托合同书
- 2023年副主任医师(副高)-儿童保健(副高)考试历年真题精华集选附答案
- 跟骨牵引 跟骨牵引图片
- 《庄子过惠子之墓》中考文言文阅读试题2篇(含答案与翻译)
- 6、柴油发电机房安全风险告知卡
- 2023学年完整公开课版ThelastdayofPompeii
- 桥式起重机司机(初级)职业技能鉴定考试题库(职校培训)
评论
0/150
提交评论