我有一个柏拉图意义上的日期时间,即某个日期和时间(例如 2022 年 1 月 18 日 15:15:00),并且我知道它代表哪个时区,例如“欧洲/莫斯科”
我想创建std::chrono::zoned_time
。有可能吗?
我在看构造函数似乎他们都需要sys_time
or 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
不一定是计算机的当地时间。这是a尚未与时区关联的本地时间。当你构造一个zoned_time
,您将本地时间与时区相关联。
上面的程序打印出:
2022-01-18 15:15:00 MSK
所以你可以将其视为恒等函数。但实际上你也可以得到 UTC 时间zt
with .get_sys_time()
。你还可以使用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
将会有相同的sys_time
(世界标准时间)为zt
。这使得建立国际视频会议变得很方便(例如)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)