C++ 参考手册

定义于头文件 <ctime>
std::tm* localtime( const std::time_t *time );

转换作为 std::time_t 值的从纪元起时间到以本地时间表达的日历时。

参数

time - 指向要转换的 time_t 对象的指针

返回值

成功时为指向内部静态 std::tm 对象的指针,否则为 NULL 。该结构体可能在 std::gmtimestd::localtimestd::ctime 之间共享,而且可能在每次调用时被覆盖。

注意

此函数可能不是线程安全的。

POSIX 要求若此函数因参数过大而失败,则设置 errnoEOVERFLOW

POSIX 指定此函数如同以调用 tzset 确定时区信息,该函数调用环境变量 TZ

示例

#include <iostream>
#include <iomanip>
#include <ctime>
#include <stdlib.h> // 定义 putenv 于 POSIX
 
int main()
{
    std::time_t t = std::time(nullptr);
    std::cout << "UTC:       " << std::put_time(std::gmtime(&t), "%c %Z") << '\n';
    std::cout << "local:     " << std::put_time(std::localtime(&t), "%c %Z") << '\n';
    // POSIX 限定:
    std::string tz = "TZ=Asia/Singapore";
    putenv(tz.data());
    std::cout << "Singapore: " << std::put_time(std::localtime(&t), "%c %Z") << '\n';
}

输出:

UTC:       Fri Sep 15 14:16:29 2017 GMT
local:     Fri Sep 15 14:16:29 2017 UTC
Singapore: Fri Sep 15 22:16:29 2017 SGT

参阅

转换纪元起时间为以协调世界时表示的日历时间
(函数)