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


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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章