现在的位置: 首页 > 综合 > 正文

将time_t格式的字符串转换成具体的时间, 存放在SystemTime结构体中

2018年04月02日 ⁄ 综合 ⁄ 共 895字 ⁄ 字号 评论关闭

记录下,方便日后直接使用

直接上源码:

先来个结构体定义:

struct SystemTime
{
	int  year;		///< 年。   
	int  month;		///< 月,January = 1, February = 2, and so on.   
	int  day;		///< 日。   
	int  wday;		///< 星期,Sunday = 0, Monday = 1, and so on   
	int  hour;		///< 时。   
	int  minute;	///< 分。   
	int  second;	///< 秒。   
	int  isdst;		///< 夏令时标识。   
};

转换函数:

/*
	功能:			将time_t格式的字符串转换成具体的时间, 存放在SystemTime结构体中
	return:			true-成功, false-失败
	sysTime:[out]	保存转换结果
	time_t_str:		time_t形式的字符串表示方式	
*/
bool getSystemTime(SystemTime& sysTime, const char* time_t_str)
{
	if(time_t_str && time_t_str[0])
	{
		time_t tt;
		sscanf(time_t_str, "%lu", &tt);
		tm* p = localtime(&tt);
		
		sysTime.year = p->tm_year + 1900;
		sysTime.month = p->tm_mon + 1;
		sysTime.day = p->tm_mday;
		sysTime.hour = p->tm_hour;
		sysTime.minute = p->tm_min;
		sysTime.second = p->tm_sec;

		return true;
	}
	return false;
}

调用函数:

void test2()
{
	const char* t = "1311906769";	// 距1970-1-1 08:00:00的秒数(中国是东8区, 所以是8点)
	SystemTime s1;

	getSystemTime(s1, t);
	printf("%04d-%02d-%02d %02d:%02d:%02d\n", s1.year, s1.month, s1.day, s1.hour, s1.minute, s1.second);
}

运行结果:

2011-07-29 10:32:49

 

抱歉!评论已关闭.