std::chrono::time_zone::to_local

来自cppreference.com
< cpp‎ | chrono‎ | time zone
 
 
 
 
template< class Duration >

auto to_local( const std::chrono::sys_time<Duration>& tp ) const

    -> std::chrono::local_time<std::common_type_t<Duration, std::chrono::seconds>>;
(C++20 起)

转换 sys_time tp 为此时区中对应的 local_time

[编辑] 返回值

tp 和此时区关联的 local_time

[编辑] 注解

结果的精度至少为 std::chrono::seconds,而若实参拥有更精细的精度则将更精细。

[编辑] 示例

#include <chrono>
#include <iostream>
 
int main()
{
    const auto some_zone_name{"Australia/Sydney"};
    const auto time_pt_utc{std::chrono::system_clock::now()};
    std::cout << "当前时间(UTC)为:\t" << time_pt_utc << '\n';
 
    try
    {
        std::cout << "当前时间(本地)为:\t\t"
                  << std::chrono::current_zone()-> // 可能抛出异常
                     to_local(time_pt_utc) << '\n'
                  << "当前时间(" << some_zone_name << ")为:\t\t"
                  << std::chrono::locate_zone(some_zone_name)-> // 可能抛出异常
                     to_local(time_pt_utc) << '\n';
    }
    catch(const std::runtime_error& ex)
    {
        std::cout << ex.what() << '\n';
    }
}

可能的输出:

当前时间(UTC)为:		2025-02-10 13:38:13.233872158
当前时间(本地)为:		2025-02-10 16:38:13.233872158
当前时间(Australia/Sydney)为:	2025-02-11 00:38:13.233872158