std::mktime
来自 cppreference.com
定义在头文件 <ctime> 中 |
||
std::time_t mktime( std::tm* time ); |
||
将本地日历时间转换为自纪元以来的时间,作为 std::time_t 对象。 time->tm_wday 和 time->tm_yday 将被忽略。 time 中的值允许超出其正常范围。
time->tm_isdst 的负值会导致 mktime
尝试确定是否启用了夏令时。
如果转换成功,则会修改 time 对象。 time 的所有字段都将更新以符合其适当的范围。 time->tm_wday 和 time->tm_yday 将使用其他字段中可用的信息重新计算。
内容 |
[编辑] 参数
time | - | 指向 std::tm 对象的指针,指定要转换的本地日历时间 |
[编辑] 返回值
自纪元以来的时间,作为 std::time_t 对象,如果成功,或者如果 time 不能表示为 std::time_t 对象,则返回 -1。
[编辑] 备注
如果 std::tm 对象是从 std::get_time 或 POSIX strptime
获得的,则 tm_isdst
的值是不确定的,需要在调用 mktime
之前显式设置。
[编辑] 示例
显式构造本地时间。
运行此代码
#include <ctime> #include <iomanip> #include <iostream> #include <sstream> int main() { setenv("TZ", "/usr/share/zoneinfo/America/Los_Angeles", 1); // POSIX-specific std::tm tm{}; // Zero initialise tm.tm_year = 2020 - 1900; // 2020 tm.tm_mon = 2 - 1; // February tm.tm_mday = 15; // 15th tm.tm_hour = 10; tm.tm_min = 15; tm.tm_isdst = 0; // Not daylight saving std::time_t t = std::mktime(&tm); std::tm local = *std::localtime(&t); std::cout << "local: " << std::put_time(&local, "%c %Z") << '\n'; }
可能的输出
local: Sat Feb 15 10:15:00 2020 PST
[编辑] 另请参阅
将自纪元以来的时间转换为表示为本地时间的日历时间 (函数) | |
C 文档 针对 mktime
|