C/C++时间函数的用法

2014-11-16 11:29:15|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C/C++|来源:唯设编程网

本文介绍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天

<123>
发表评论0条 】
网友评论(共?条评论)..
C/C++时间函数的用法