std:: mktime
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
定义于头文件
<ctime>
|
||
|
std::
time_t
mktime
(
std::
tm
*
time
)
;
|
||
将本地日历时间转换为自纪元起的时间,以 std::time_t 对象表示。 time - > tm_wday 和 time - > tm_yday 字段将被忽略。 time 中的数值允许超出其正常范围。
当
time
-
>
tm_isdst
为负值时,将导致
mktime
尝试判断夏令时是否生效。
若转换成功, time 对象将被修改。其所有字段都会更新至符合有效取值范围。 time - > tm_wday 和 time - > tm_yday 会基于其他字段的可用信息重新计算。
目录 |
参数
| time | - | 指向 std::tm 对象的指针,指定要转换的本地日历时间 |
返回值
成功时返回自纪元起的时间作为 std::time_t 对象,若时间无法表示为 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
|
|