local_info
结构
为有关将 local_time
转换为 sys_time
的结果的时区信息提供一个低级别接口。
语法
struct local_info;
成员
Function | 说明 |
---|---|
result |
描述转换结果的代码。 |
first , second |
转换的结果。 |
成员常量
名称 | 值 | 说明 |
---|---|---|
unique |
0 | 转换结果是唯一的。 |
nonexistent |
1 | 没有要作为 local_time 转换目标的对应 sys_time 。 |
ambiguous |
2 | 转换结果不明确。 |
非成员
函数 | 说明 |
---|---|
operator<< |
将 local_info 输出到流。 |
result
将 local_time
转换到 sys_time
的结果。
int result;
返回值
结果可以是以下值之一:
unique
:表示local_time
已成功转换到sys_time
。nonexistent
:没有从local_time
到sys_time
的映射。ambiguous
:local_time
在从夏令时到标准时间之间的转换期间出现,因此可以被转换为两个sys_time
值。
注解
若要了解如何基于 result
设置 first
和 second
,请参阅以下有关 first
和 second
的部分。
first
, second
提供将 local_time
转换到 sys_time
的结果。
sys_seconds begin;
sys_seconds end;
返回值
first
和 second
是基于 result
设置的,如下所示:
result |
first |
second |
---|---|---|
unique |
包含转换为 sys_time 的 local_time 值 |
零初始化 |
nonexistent |
结束于 local_time 之前的 sys_info |
开始于 local_time 之后的 sys_info 。 |
ambiguous |
结束于 local_time 之后的 sys_info |
开始于 local_time 之前的 sys_info 。 |
ambiguous
结果代码
在秋季从夏令时转换到标准时间期间,时钟实质上会获得额外的一小时。 这可能令人困惑,因为转换到标准时间不是意味着失去了一小时吗? 通过回退一小时,在时钟调整为标准时间后,将重复转换前的一小时。 考虑纽约标准时间的变更,该变更发生在 11 月的第一个星期天凌晨 2:00。 首先,凌晨 1:00 过去了。 凌晨 2 点,时钟转换为标准时间,所以现在又是凌晨 1:00。 这意味着凌晨 1 点到 2 点之间的时间将“重复”,从而实际上增加了一小时。 有关示例,请参见 ambiguous_local_time
。
如果 local_time
指定在此“额外”一小时内的时间,则如何转换它并不明确。 是否应将转换后的时间视为该小时发生的“第一次”时间,还是“第二次”? 如果未指定枚举 choose
来指示应该如何选择,result
应设置为 ambiguous
,first
和 second
将反映 local_time
可被转换到的时间的两种选择。
nonexistent
结果代码
在春季从标准时间转换到夏令时期间,时钟实质上会丢失一小时。 这可能令人困惑,因为转换到夏令时不是意味着增加了一小时吗? 通过“向前跳”一小时,转换后的一小时被有效删除。 请考虑纽约夏令时的变化,这发生在 3 月的第二个星期天凌晨 2 点。 凌晨 2 点,时钟转换到夏令时,现在显示为凌晨 3:00。 例如,如果转换的 local_time
为凌晨 2:30,则该时间是在“已删除”的时间段内,因此 result
应该具有 nonexistent
代码。 有关示例,请参见 nonexistent_local_time
。
示例:获取 local_info
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
const auto& timeZoneDatabase = get_tzdb();
const auto& currentZone = timeZoneDatabase.current_zone();
local_time<system_clock::duration> lt = currentZone->to_local(system_clock::now());
auto localInfo = currentZone->get_info(lt);
std::cout << "local_time: " << lt << "\n";
std::cout << localInfo << "\n";
return 0;
}
local_time: 2021-09-08 15:37:57.6853963
result: unique, first: (begin: 2021-03-14 10:00:00, end: 2021-11-07 09:00:00, offset: -25200s, save: 60min, abbrev: PDT)
要求
标头:<chrono>
命名空间:std::chrono
编译器选项: /std:c++latest
<chrono>
ambiguous_local_time
异常
choose
enum
file_clock
类
high_resolution_clock
local_t
结构
non_existent
异常
system_clock
结构
tai_clock
类
utc_clock
类
头文件引用