2014-11-16 11:29:15|?次阅读|上传:wustguangh【已有?条评论】发表评论
本文介绍C/C++与时间相关的函数的使用,包括如何获取日历时间,如何获取本地时间,如何将得到的时间格式化输出,如何计算时间间隔,最后面的部分介绍了自定义时间格式的相关语法。
time_t是定义在time.h中的一个类型,表示一个日历时间,也就是从1970年1月1日0时0分0秒到此时的秒数,原型是:
typedef long time_t; /* time value */
可以看出time_t其实是一个长整型,由于长整型能表示的数值有限,因此它能表示的最迟时间是2038年1月18日19时14分07秒。
函数time可以获取当前日历时间时间,time的定义:
time_t time(time_t *)
#include <iostream> #include <time.h> using namespace std; int main(void) { time_t nowtime; nowtime = time(NULL); //获取当前时间 cout << nowtime << endl; return 0; }
输出结果:1268575163
time_t只是一个长整型,不符合我们的使用习惯,需要转换成本地时间,就要用到tm结构,time.h中结构tm的原型是:
struct tm { int tm_sec; /* seconds after the minute - [0,59] */ int tm_min; /* minutes after the hour - [0,59] */ int tm_hour; /* hours since midnight - [0,23] */ int tm_mday; /* day of the month - [1,31] */ int tm_mon; /* months since January - [0,11] */ int tm_year; /* years since 1900 */ int tm_wday; /* days since Sunday - [0,6] */ int tm_yday; /* days since January 1 - [0,365] */ int tm_isdst; /* daylight savings time flag */ };
可以看出,这个机构定义了年、月、日、时、分、秒、星期、当年中的某一天、夏令时。可以用这个结构很方便的显示时间。
用localtime获取当前系统时间,该函数将一个time_t时间转换成tm结构表示的时间,函数原型:
struct tm * localtime(const time_t *)
使用gmtime函数获取格林尼治时间,函数原型:
struct tm * gmtime(const time_t *)
为了方便显示时间,定义了一个函数void dsptime(const struct tm *);
#include <iostream> #include <time.h> using namespace std; void dsptime(const struct tm *); //输出时间。 int main(void) { time_t nowtime; nowtime = time(NULL); //获取日历时间 cout << nowtime << endl; //输出nowtime struct tm *local,*gm; local=localtime(&nowtime); //获取当前系统时间 dsptime(local); gm=gmtime(&nowtime); //获取格林尼治时间 dsptime(gm); return 0; } void dsptime(const struct tm * ptm) { char *pxq[]={"日","一","二","三","四","五","六"}; cout << ptm->tm_year+1900 << "年" << ptm->tm_mon+1 << "月" << ptm->tm_mday << "日 " ; cout << ptm->tm_hour << ":" << ptm->tm_min << ":" << ptm->tm_sec <<" " ; cout << " 星期" <<pxq[ptm->tm_wday] << " 当年的第" << ptm->tm_yday << "天 " << endl; }
输出结果:
1268575163
2010年3月14日 21:59:23 星期日 当年的第72天
2010年3月14日 13:59:23 星期日 当年的第72天