參考博文:https://www.cnblogs.com/joeblackzqq/archive/2012/07/10/2584121.html
1、獲取從1970年到現在的秒數(時間戳)
time_t time(time_t &timer); // 如果你已經聲明了參數timer,你可以從參數timer返回現在的日歷時間,同時也可以通過返回值返回現在的日歷時間
例:time_t timestamp = time(nullptr);
2、把時間戳轉化成時間結構體(localtime()函數是將時間轉化為本地時間。)
struct tm * localtime(const time_t * timer);
struct tm * gmtime(const time_t *timer); //將時間戳轉化為世界標准時間(即格林尼治時間)比北京時間晚8個小時。
struct tm {
int tm_sec; /* 秒 – 取值區間為[0,59] */
int tm_min; /* 分 - 取值區間為[0,59] */
int tm_hour; /* 時 - 取值區間為[0,23] */
int tm_mday; /* 一個月中的日期 - 取值區間為[1,31] */
int tm_mon; /* 月份(從一月開始,0代表一月) - 取值區間為[0,11] */
int tm_year; /* 年份,其值等於實際年份減去1900 */
int tm_wday; /* 星期 – 取值區間為[0,6],其中0代表星期天,1代表星期一,以此類推 */
int tm_yday; /* 從每年的1月1日開始的天數 – 取值區間為[0,365],其中0代表1月1日,1代表1月2日,以此類推 */
int tm_isdst; /* 夏令時標識符,實行夏令時的時候,tm_isdst為正。不實行夏令時的進候,tm_isdst為0;不了解情況時,tm_isdst()為負。*/
};
time_t timestamp = time(nullptr);
tm *t_struct = localtime(×tamp);
cout << t_struct->year << "年" << endl; //2018年
3、結構體轉化為時間戳
time_t mktime(tm *timeptr);
time_t timestamp = time(nullptr);
tm *t_struct = localtime(×tamp);
t_struct->tm_hour = 0;
t_struct->tm_min = 0;
t_struct->tm_sec = 0;
time_t newTime = mktime(&t_struct);//該時間戳已改變成今天的0點0分0秒
4、時間轉化為字符串
char * ctime(const time_t *timer);//固定格式
size_t strftime(char *strDest,size_t maxsize,const char *format,const struct tm *timeptr);//自定義格式
例:
struct
tm
*ptr;
time_t
timestamp;
char
str[80];
timestamp
=
time
(NULL);
ptr =
localtime
(timestamp);
strftime
(str, 100,
"%Y年%m月%d日 %H:%M:%S"
, ptr);
printf
(str);//2018年06月04日 15:45:28秒