zoned_time
不可解析,原因很简单,解析程序通常不知道什么
time_zone
放入
分区_时间
。但这是可以解决的。
这个
to_string
函数当前写出
时区
缩写
但是
时区
缩写在所有语言中都不是唯一的
时区
s.只有
时区
姓名
是独一无二的。所以
to_string
函数必须输出
时区
改为名称:
std::string to_string(time_point_t tp)
{
std::ostringstream oss;
oss << std::format("{:%Y-%m-%dT%T}", tp) << tp.get_time_zone()->name();
return oss.str();
}
现在
from_string
函数可以将本地时间解析为
local_time
,并解析
时区
名字变成a
string
.然后a
分区_时间
可以由此形成
本地时间
和
时区
姓名:
time_point_t from_string(std::string_view str)
{
std::istringstream iss{std::string(str)};
std::chrono::local_time<duration_t> tp{};
std::string tz_name;
iss >> std::chrono::parse("%Y-%m-%dT%T%Z",tp,tz_name);
return time_point_t{tz_name, tp};
}