时间常见的有两种存储方式:
time_t :整数类型 用来存储从1970年到现在经过了多少秒
tm :结构类型 把日期和时间以 C 结构的形式保存,tm 结构的定义如下:
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
int tm_year; // 自 1900 年起的年数
int tm_wday; // 一周中的第几天,范围从 0 到 6,从星期日算起
int tm_yday; // 一年中的第几天,范围从 0 到 365,从 1 月 1 日算起
int tm_isdst; // 夏令时
}
1 |
|
输出为UTC时间:
Thu Oct 25 01:49:20 2018
用gmtime将time_t类型的时间转换为struct tm
类型的时间,按没有经过时区转换的UTC时间,然后再用asctime转换为我们常见的格式 Thu Oct 25 01:49:20 2018
修改时间输出格式:
1 |
|
输出为本地时间:
2018/10/25 Thu 09:49:20
常用时间函数:time_t time(time_t* t);
//取得从1970年1月1日至今的秒数
char *asctime(const struct tm* timeptr);
//将结构中的信息转换为真实世界的时间,以字符串的形式显示
char *ctime(const time_t* timep);
//将timep转换为真是世界的时间,以字符串显示
struct tm* gmtime(const time_t* timep);
//将time_t表示的时间转换为没有经过时区转换的UTC时间,是一个struct tm结构指针
struct tm* localtime(const time_t* timep);
//和gmtime类似,但是它是经过时区转换的时间
time_t mktime(struct tm* timeptr);
//将struct tm 结构的时间转换为从1970年至今的秒数
C语言中,#include < time.h >
time_t timep;
time(&timep); /* 获取 time_t 类型的当前时间 */
C++中,#include < ctime >
time_t now = time(0); // 基于当前系统的当前日期/时间
转换关系如下图: