您的位置:首页 > 编程语言 > C语言/C++

C++之时间函数使用总结

2013-07-18 16:50 381 查看
今天设计了一个会话管理框架,管理客户端与服务器的每个Session,在SessionMgr管理会话的时候,用到时间函数,去判断会话是否超时。这里顺便整理下,时间相关的一些函数和结构体。

一. time_t

先不关心操作系统类型,从下面声明可以看出time_t其实就是个长整型,一个日历时间,也就是从1970年1月1日0时0分0秒到此时的秒数,最迟时间是2038年1月18日19时14分07秒。

#ifndef _TIME_T_DEFINED
#ifdef _USE_32BIT_TIME_T
typedef __time32_t time_t;      /* time value */
#else
typedef __time64_t time_t;      /* time value */
#endif
#define _TIME_T_DEFINED         /* avoid multiple def's of time_t */
#endif


获取当前日历时间时间的方法为:

time_t curTime;
curTime = time(NULL);
printf("Time: %d \r\n",curTime);


显示结果:Time: 1374131485



二.tm

time_t只是一个长整型,不符合我们的使用习惯,需要转换成本地时间,就要用到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 */ 从1900年到现在的年数,所以计算当前年份的时候要在该属性基础上加上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 */
        };


三.time_t 转换成 tm
用localtime获取当前系统时间:

struct
tm * localtime(const time_t *)

使用gmtime函数获取格林尼治时间:

struct tm * gmtime(const time_t *)

四.示例代码:

#include "stdafx.h"
#include <time.h>
#include <stdlib.h>
#include <iostream>

using namespace std;

void displaytime(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;  
}  

int _tmain(int argc, _TCHAR* argv[])
{
	time_t curTime;
	curTime = time(NULL);
	printf("Time: %d \r\n",curTime);
		
	struct tm * localTime = localtime(&curTime);
	struct tm * gmTime = gmtime(&curTime);

	displaytime(localTime);
	displaytime(gmTime);

	system("pause");
	return 0;
}


输出为:

Time: 1374131485

2013年7月18日 7:11:25 星期四 当年的第198天

2013年7月18日 7:11:25 星期四 当年的第198天

请按任意键继续. . .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: