Ria*_*iaD 3 c++ timezone c++-chrono
我有一个柏拉图意义上的日期时间,即某个日期和时间(例如 2022 年 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';
}
Run Code Online (Sandbox Code Playgroud)
local_time不一定是计算机的当地时间。它是尚未与时区关联的当地时间。当您构造 时zoned_time,您将本地时间与时区相关联。
上面的程序打印出:
2022-01-18 15:15:00 MSK
Run Code Online (Sandbox Code Playgroud)
所以你可以将其视为恒等函数。但实际上,您也可以使用 来获取 UTCzt时间.get_sys_time()。您还可以使用zt作为“时间点”来构造另一个zoned_time:
std::chrono::zoned_time zt2{"America/New_York", zt};
std::cout << zt2 << '\n';
Run Code Online (Sandbox Code Playgroud)
输出:
2022-01-18 07:15:00 EST
Run Code Online (Sandbox Code Playgroud)
zt2将具有与 相同的sys_time(UTC) zt。这使得建立国际视频会议变得很方便(例如)。
| 归档时间: |
|
| 查看次数: |
2070 次 |
| 最近记录: |