C++ ctime mktime() 函数
定义和用法
mktime()
函数从一个 tm
结构体中为日期和时间创建一个时间戳。该结构体所表示的时间被视为处于计算机的本地时区。
mktime()
函数还会通过修正日期溢出并填充 tm_wday
和 tm_yday
成员来修改 tm
结构体。
mktime()
函数在 <ctime>
头文件中定义。
时间戳通常表示相对于 Unix 纪元(1970 年 1 月 1 日)的秒数,但它取决于库的实现方式,因此更安全的做法是仅将其与专门用于处理时间戳的函数(如 localtime()
和 difftime()
)一起使用。
mktime()
函数使用 tm
结构体的以下成员来创建时间戳:
- tm_sec - 分钟内的秒数
- tm_min - 小时内的分钟数
- tm_hour - 一天内的小时数(从 0 到 23)
- tm_mday - 一个月中的天数
- tm_mon - 月份(从 0 开始,0 表示 1 月,到 11 表示 12 月)
- tm_year - 自 1900 年以来的年数
- tm_isdst - 当夏令时生效时为 1,不生效时为 0,-1 表示使用计算机的时区设置
mktime()
函数还会处理日期的溢出和下溢。例如,下面的代码将 4 月 31 日正确地解释为 5 月 1 日。
实例
例子 1
创建一个时间戳并打印其日期和时间:
struct tm date; time_t timestamp; date.tm_year = 2023 - 1900; // 自 1900 年以来的年数 date.tm_mon = 12 - 1; // 自 1 月以来的月数 date.tm_mday = 17; date.tm_hour = 12; date.tm_min = 30; date.tm_sec = 1; date.tm_isdst = -1; timestamp = mktime(&date); cout << ctime(×tamp);
例子 2
mktime()
函数可以解释溢出的日期:
struct tm date; time_t timestamp; date.tm_year = 2024 - 1900; // 自 1900 年以来的年数 date.tm_mon = 4 - 1; // 自 1 月以来的月数 date.tm_mday = 31; date.tm_hour = 0; date.tm_min = 0; date.tm_sec = 0; date.tm_isdst = -1; timestamp = mktime(&date); cout << ctime(×tamp);
语法
mktime(struct tm * time);
参数
参数 | 描述 |
---|---|
time | 必需。指向 tm 结构体的指针。 |
技术细节
返回: | time_t 类型的时间戳,表示结构体中给定的日期和时间。 |
---|