C++的 时间操作

C++ 的时间操作 库 time.h 里边熟悉的有众多的函数 和两个类型
time_t
struct tm

其中 time_t 里边存储时间戳
tm作为一个结构体 字段为时间的各种 单位

 

#include <iostream>
#include <string>
#include <time.h>

using namespace std;

std::string formart_timestamp(long timestamp , std::string format_str)
{
	const time_t rawtime = (const time_t)timestamp;

	struct tm * dt;
	char timestr[30];
	char buffer [30];

	dt = localtime(&rawtime);
	strftime(timestr, sizeof(timestr), format_str.c_str() , dt);
	sprintf(buffer,"%s", timestr);
	std::string stdBuffer(buffer);
	return stdBuffer;
}

// format %Y-%m-%d %H:%M:%S
long get_timestamp(std::string formated_time )
{
	time_t t;
	struct tm s;
	
	sscanf(
		formated_time.c_str(),"%d-%d-%d %d:%d:%d",		&s.tm_year,&s.tm_mon,&s.tm_mday,&s.tm_hour,&s.tm_min,&s.tm_sec);

	s.tm_year -= 1900;
	s.tm_mon -= 1;
	t=mktime(&s);
	return (long)t;
}

int main()
{

	long _timestamp = 1971298743;
	string _format = "%Y-%m-%d %H:%M:%S";


	string str_time = formart_timestamp( _timestamp , _format);
	long long_time = get_timestamp(str_time);
	cout << long_time << " " ;
	cout << str_time << endl;
	cout << _timestamp;
	

	getchar();
	return 0;
}


 

附上 格式化的 关键字

/************************************************************************/
/*
%a  Abbreviated weekday name

%A  Full weekday name

%b  Abbreviated month name

%B  Full month name

%c  Date and time representation appropriate for locale

%d  Day of month as decimal number (01 – 31)

%H  Hour in 24-hour format (00 – 23)

%I  Hour in 12-hour format (01 – 12)

%j  Day of year as decimal number (001 – 366)

%m  Month as decimal number (01 – 12)

%M  Minute as decimal number (00 – 59)

%p  Current locale’s A.M./P.M. indicator for 12-hour clock

%S  Second as decimal number (00 – 59)

%U  Week of year as decimal number, with Sunday as first day of week (00 – 53)

%w  Weekday as decimal number (0 – 6; Sunday is 0)

%W  Week of year as decimal number, with Monday as first day of week (00 – 53)

%x  Date representation for current locale

%X  Time representation for current locale

%y  Year without century, as decimal number (00 – 99)

%Y  Year with century, as decimal number

%z, %Z  Time-zone name or abbreviation; no characters if time zone is unknown

%%  Percent sign


*/
/************************************************************************/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值