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
*/
/************************************************************************/