std::localtime

来自cppreference.com
< cpp‎ | chrono‎ | c
 
 
工具库
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)
(C++20)
swap 与类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
初等字符串转换
(C++17)
(C++17)
 
 
 
在标头 <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

参阅

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