time_zone_link
类
指定 time_zone
的替代名称。
语法
class time_zone_link; // Since C++20
备注
当初始化时区数据库时,将创建 time_zone_link
实例。 无法直接创建它们。 通过 get_tzdb().links
获取实例,如本主题末尾处的示例所示。
尽管此类型具有默认的移动构造函数和移动赋值运算符,但它不可复制,因为仅提供对此类型的 const
访问权限。 使用这些函数会导致未定义的行为,这就是此处未列出移动构造函数和赋值运算符的原因。
与 IANA 数据库的差异
在 Microsoft 的实现中,时区数据在某些情况下可能与 Internet 编号分配机构 (IANA) 时区数据库有所不同。 例如,返回 "America/Nuuk"
,而不是 "America/Godthab"
("America/Nuuk"
是在 2020 年 4 月重命名的 "America/Godthab"
)。 目前我们不提供 "Eastern War Time EWT"
时区。 有关详细信息,请参阅 Microsoft STL GitHub 存储库中的问题 #1786。
成员
公共成员函数和函数模板
名称 | 描述 |
---|---|
name |
获取时区的替代名称。 |
target |
此 time_zone_link 是其替代名称的 time_zone 的名称。 |
非成员
“属性” | 描述 |
---|---|
operator== |
确定两个 time_zone_link 对象是否具有相同的 name 。 target 名称不是相等性检查的一部分。 |
operator<=> |
将此 time_zone_link 与另一个 time_zone_link 进行比较。 >, >=, <=, <, != 运算符由编译器合成。 返回 Left.name() <=> Right.name() 。 |
要求
标头:<chrono>
时区数据仅适用于 Windows 10 版本 1903/19H1 及更高版本,以及 Windows Server 2022 及更高版本。
命名空间:std::chrono
编译器选项: /std:c++latest
name
获取时区的替代名称。
string_view name() const noexcept;
target
获取此 time_zone_link
是其替代名称的 time_zone
的名称。
string_view target() const noexcept; // Since C++20
示例:显示 time_zone_link
名称
以下示例显示 IANA 时区数据库中每个 time_zone_link
的名称。
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
const auto& my_tzdb = get_tzdb(); // get the IANA time zone database
auto& links = my_tzdb.links; // get the list of time_zone_links from the database
std::for_each(links.begin(), links.end(), // display each time_zone_link name and target
[](auto& l)
{
std::cout << "Name: " << l.name() << "Target" << l.target() << '\n';
});
return 0;
}
Name: ACT Target:Australia/Darwin
Name: AET Target:Australia/Sydney
Name: AGT Target:America/Buenos_Aires
Name: ART Target:Africa/Cairo
Name: AST Target:America/Anchorage
Name: Africa/Asmara Target:Africa/Asmera
Name: Africa/Timbuktu Target:Africa/Bamako
Name: America/Argentina/Buenos_Aires Target:America/Buenos_Aires
Name: America/Argentina/Catamarca Target:America/Catamarca
...
Name: Zulu Target:Etc/UTC