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

C++的 时间操作

2013-09-07 21:17 381 查看
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
4000
-= 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

*/

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

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息