首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TimeZoneNames标准,日光,一般用途

TimeZoneNames标准,日光,一般用途
EN

Stack Overflow用户
提问于 2016-09-21 23:29:26
回答 2查看 212关注 0票数 1

在尝试区分山地时区和亚利桑那州(我意识到它们都是山地时间)时,我发现GetNamesForTimeZone(“美国/凤凰城”,"en-us")返回了一个日光名称。

我是否应该依靠外部代码(Noda time)来判断该时区的时间是否为夏令时,或者,如果某个区域没有夏令时,是否有一种仅通过TimeZoneNames函数就能知道的方法?

同样,使用“通用”名称作为时区名称而不是标准vs daylight的用例是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-21 23:46:40

据我所知,TimeZoneNames只涉及时区名称本身--它对时区数据本身一无所知。

如果你想知道美国/凤凰城目前是否遵守夏令时,我肯定会使用Noda时间本身:

代码语言:javascript
运行
复制
// Usually pass in System.Clock.Instance as the clock...
// or take an Instant instead.
public bool IsCurrentlyObservingDaylightSavings(string id, IClock clock)
{
    var zone = DateTimeZoneProviders.Tzdb[id];
    var now = clock.Now;
    var zoneInterval = zone.GetZoneInterval(now);
    return zoneInterval.Savings != Offset.Zero;
}

我可能会在2.0版本中添加一个DateTimeZone.InDaylightSaving(Instant)方法……

票数 2
EN

Stack Overflow用户

发布于 2016-09-22 06:25:47

作为TimeZoneNames库的作者,我可以解释为什么会发生这种情况。

首先,America/Phoenix映射到the CLDR metaZones.xml file中的America_Mountain元区域

代码语言:javascript
运行
复制
<timezone type="America/Phoenix">
    <usesMetazone mzone="America_Mountain"/>
</timezone>

其他时区也在同一元区域中:

代码语言:javascript
运行
复制
<timezone type="America/Denver">
    <usesMetazone mzone="America_Mountain"/>
</timezone>

然后,在每个CLDR语言文件中,您将看到America_Mountain metazone条目及其本地化字符串:

代码语言:javascript
运行
复制
<metazone type="America_Mountain">
    <long>
        <generic>Mountain Time</generic>
        <standard>Mountain Standard Time</standard>
        <daylight>Mountain Daylight Time</daylight>
    </long>
    <short>
        <generic>MT</generic>
        <standard>MST</standard>
        <daylight>MDT</daylight>
    </short>
</metazone>

因此,CLDR中没有关于DST是否适用于亚利桑那州的信息。请记住,亚利桑那州过去确实有DST - last in 1967。因此,如果没有像Noda Time中那样的TZDB数据,您就无法确定DST在某个特定时间点是否有效。

Jon's answer展示了如何使用Noda Time测试DST是否有效。得到结果后,可以相应地从TimeZoneNames中选择标准或边坡字符串。

至于通用名称,这通常是当人们通常指的是时区时使用的,而不是指夏令时部分或标准时间部分。这方面的一个用例是时区选择,例如演示的here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39620778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档