簡體   English   中英

從區域和時間創建 std::chrono::zoned_time

[英]Create std::chrono::zoned_time from zone and time

我有一個柏拉圖式意義上的日期時間,即某個日期和時間(如 1 月 18 日 15:15:00),我知道它代表什么時區,例如“歐洲/莫斯科”

我想創建std::chrono::zoned_time 有可能嗎? 我查看了構造函數,似乎它們都需要sys_timelocal_time ,這不是我所擁有的。

我錯過了一些明顯的東西嗎?

#include <chrono>
#include <iostream>

int
main()
{
    using namespace std::literals;
    std::chrono::zoned_time zt{"Europe/Moscow",
        std::chrono::local_days{18d/std::chrono::January/2022} + 15h + 15min};
    std::cout << zt << '\n';
}

local_time不一定是計算機的本地時間。 這是尚未與時區關聯本地時間。 構造zoned_time時,會將本地時間與時區相關聯。

上面的程序打印出來:

2022-01-18 15:15:00 MSK

因此,您可以將其視為身份 function。 但實際上,您也可以使用.get_sys_time()zt中獲取 UTC 時間。 您還可以使用zt作為“時間點”來構建另一個zoned_time

std::chrono::zoned_time zt2{"America/New_York", zt};
std::cout << zt2 << '\n';

Output:

2022-01-18 07:15:00 EST

zt2將具有與zt相同的sys_time (UTC)。 這使得設置國際視頻會議(例如)變得很方便。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM