【问题标题】:Getting the current time in a timezone isn't taking into account daylight savings (I think)在时区中获取当前时间并未考虑夏令时(我认为)
【发布时间】:2019-05-05 22:46:46
【问题描述】:

我正在尝试使用 NodaTime 获取时区列表的当前时间。但是,我遇到了“EST”时区的问题。据我所知,它非常适合在许多其他时区获取时间,但“EST”似乎不正确。

目前(截至目前)Google 告诉我美国东部标准时间是 18:40。有没有办法可以解决这个问题(为了更好的词),以便我能够根据当前的 UTC 时间获取给定时区的本地时间

void Main()
{
    var timeZones = new List<string>()
    {
        "Africa/Abidjan",
        "Africa/Bangui",
        "Africa/Casablanca",
        "Africa/Johannesburg",
        "America/Guayaquil",
        "America/New_York",
        "America/Vancouver",
        "America/Montreal",
        "Europe/Lisbon",
        "Europe/London",
        "EST"
    };

    GetLocalTimes(timeZones).Dump();
    //Africa/Abidjan 05/05/2019 22:40:22 
    //Africa/Bangui 05/05/2019 23:40:22 
    //Africa/Casablanca 05/05/2019 22:40:22 
    //Africa/Johannesburg 06/05/2019 00:40:22 
    //America/Guayaquil 05/05/2019 17:40:22 
    //America/New_York 05/05/2019 18:40:22 
    //America/Vancouver 05/05/2019 15:40:22 
    //America/Montreal 05/05/2019 18:40:22 
    //Europe/Lisbon 05/05/2019 23:40:22 
    //Europe/London 05/05/2019 23:40:22 
    //EST 05/05/2019 17:40:22 
}

public IReadOnlyDictionary<string, DateTime> GetLocalTimes(IEnumerable<string> timeZones)
{
    var dictionary = new Dictionary<string, DateTime>();

    foreach (var timeZone in timeZones)
    {
        var utcDateTime = DateTime.SpecifyKind(DateTime.UtcNow, DateTimeKind.Utc);
        var zonedDateTime = Instant.FromDateTimeUtc(utcDateTime).InZone(DateTimeZoneProviders.Tzdb[timeZone]).ToDateTimeUnspecified();

        dictionary.Add(timeZone, zonedDateTime);
    }

    return dictionary;
}

【问题讨论】:

  • 也许“EST”无效。你试过美国/东部吗? .这里列表nodatime.org/TimeZones
  • EST 是一个有效的 IANA 时区 ID,但它并不表示“东部时间”,而是表示“东部标准时间”,即始终为 UTC-5。

标签: c# nodatime


【解决方案1】:

这不是 NodaTime 问题,而是时区混乱。 EST 不会因夏令时而改变。那些遵守夏令时的地方会更改为 EDT,这是一小时的差异。基本上 EST 和 EDT 是跟踪东部时区 (ET) 时间的两种方式。

https://en.wikipedia.org/wiki/Eastern_Time_Zone

尝试改用America/New_York

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-18
    • 2011-10-29
    • 2017-09-15
    • 2012-09-08
    • 2011-08-14
    • 2021-01-21
    • 1970-01-01
    • 2021-08-28
    相关资源
    最近更新 更多