![](/img/trans.png)
[英]How to convert std::chrono::zoned_time to std::string
[英]Create std::chrono::zoned_time from zone and time
我有一個柏拉圖式意義上的日期時間,即某個日期和時間(如 1 月 18 日 15:15:00),我知道它代表什么時區,例如“歐洲/莫斯科”
我想創建std::chrono::zoned_time
。 有可能嗎? 我查看了構造函數,似乎它們都需要sys_time
或local_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.