时间处理 c++ 获取当前系统时间 1. 时间戳形式 2. char *形式

1. 获取时间戳:

time_t rawtime;

time(&rawtime);  //结果是时间戳

2. 将时间戳转为 char* 类型的日期 Www Mmm dd hh:mm:ss yyyy

复制代码
 1 /* ctime example */
 2 #include 
 3 #include 
 4 #include 
 5 
 6 using namespace std;
 7 
 8 int main ()
 9 {
10   time_t rawtime;
11 
12   time ( &rawtime );
13   printf("%ld\n", &rawtime);
14   printf ( "The current local time is: %s", ctime (&rawtime) );
15   
16   char * time = ctime(&rawtime);
17   //ctime(&rawtime) : time_t/timestampe -> "Www Mmm dd hh:mm:ss yyyy" format
18   cout<< time << endl;
19   printf("%s", asctime(gmtime(&rawtime)));// asctime(gmtime(&rawtime)) = ctime(&rawtime);
20   //here gmtime(&rawtime) : time_t(timpstampe) -> struct tm
21   //here asctime(gmtime) : struct tm -> "Www Mmm dd hh:mm:ss yyyy" format 
22   
23   
24   struct tm * ptm;
25   ptm = gmtime(&rawtime);
26   
27   cout<<(ptm->tm_year + 1900)<<"year "<<(ptm->tm_mon + 1)<<"month "<<(ptm->tm_mday)<<"day "<<(ptm
28   ->tm_hour)<<":"<<(ptm->tm_min)<<":"<<(ptm->tm_sec)<<endl;
29   
30 
31   return 0;
32 }
复制代码

 

结果:

134507764  //time ( &rawtime );  printf("%ld\n", &rawtime);
The current local time is: Mon Jul  9 15:17:03 2012  //printf ( "The current local time is: %s", ctime (&rawtime) );
Mon Jul  9 15:17:03 2012  //char * time = ctime(&rawtime);

Mon Jul  9 13:17:03 2012  //printf("%s", asctime(gmtime(&rawtime)));

2012year 7month 9day 13:17:3  //cout<<(ptm->tm_year + 1900)<<"year "<<(ptm->tm_mon + 1)<<"month "<<(ptm->tm_mday)<<"day "<<(ptm 28 ->tm_hour)<<":"<<(ptm->tm_min)          <<":"<<(ptm->tm_sec)<<endl;

3.

 

结果 输出 UTC 标准时间 12:49  //时间协调时间

********************

关于时间 定义的 struct tm的介绍:

 
type

struct tm

Time structure
Structure containing a calendar date and time broken down into its components.

The structure contains nine members of type  int, which are (in any order):
1
2
3
4
5
6
7
8
9
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
而直接存储年月日的是一个结构:
struct tm
{
    int tm_sec;  /*秒,正常范围0-59, 但允许至61*/
    int tm_min;  /*分钟,0-59*/
    int tm_hour; /*小时, 0-23*/
    int tm_mday; /*日,即一个月中的第几天,1-31*/
    int tm_mon;  /*月, 从一月算起,0-11*/  1+p->tm_mon;
    int tm_year;  /*年, 从1900至今已经多少年*/ 1900+ p->tm_year;
    int tm_wday; /*星期,一周中的第几天, 从星期日算起,0-6*/
    int tm_yday; /*从今年1月1日到目前的天数,范围0-365*/
    int tm_isdst; /*日光节约时间的旗标*/
};

需要特别注意的是,年份是从1900年起至今多少年,而不是直接存储如2011年,月份从0开始的,0表示一月星期也是从0开始的, 0表示星期日,1表示星期一。



The meaning of each is:
Member Meaning Range
tm_sec seconds after the minute 0-61*
tm_min minutes after the hour 0-59
tm_hour hours since midnight 0-23
tm_mday day of the month 1-31
tm_mon months since January 0-11real month = tm_mon + 1
tm_year years since 1900  1900+tm_year
tm_wday days since Sunday 0-6
tm_yday days since January 1 0-365
tm_isdst Daylight Saving Time flag  
The  Daylight Saving Time flag ( tm_isdst) is greater than zero if Daylight Saving Time is in effect, zero if Daylight Saving Time is not in effect, and less than zero if the information is not available.

tm_sec is generally 0-59. Extra range to accommodate for leap seconds in certain systems.

你可能感兴趣的:(C/C++)