【问题标题】:IANA/Olson timezone support in C#C# 中的 IANA/Olson 时区支持
【发布时间】:2015-06-16 10:16:12
【问题描述】:

C# 支持全球不同的时区 ID。请在以下链接中找到 C# 支持的时区列表:

https://msdn.microsoft.com/en-us/library/gg154758.aspx

时区 ID 在 C# 库函数中用于跨时区转换时间。

[例如TimeZoneInfo.ConvertTimeBySystemTimeZoneId("Hawaiian Standard Time")]

同样,我想要对 AMERICA/MIQUELON 的支持,它不在上面链接中提供的 msdn 列表中。

有人可以为这个特定时区提供解决方法吗?

【问题讨论】:

  • 您可以轻松通过查看 code presented in this other SO question 枚举 C#/.NET 已知的所有时区 - 如果您的时区字符串出现 - 它们受 .NET 支持。 ..
  • 它不是加拿大的一部分,它覆盖了两个属于法国的小岛,只有 6000 人住在那里。网站不同意,但大多数人赞成 UTC-3:00 夏令时。内置 Windows 时区太晦涩难懂,它们遵循纽芬兰的非零几率。最好的办法是询问您的客户他们对此做了什么。
  • 你为什么不使用另一个使用相同 UTC 偏移量的时区?

标签: c# timezone


【解决方案1】:

"America/Miquelon" 等时区标识符和您列出的其他标识符(在编辑您的问题之前)来自 IANA 时区数据库。您可以在the timezone tag wikion Wikipedia 阅读更多内容。

请注意,它们通常以混合大小写形式出现,而不是全部大写。

在 .NET 中使用这些最简单和最好的方法是通过 Noda Time 库。

例如:

DateTimeZone tz = DateTimeZoneProviders.Tzdb["America/Miquelon"];
Instant now = SystemClock.Instance.Now;
ZonedDateTime converted = now.InZone(tz);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-14
    • 2013-08-17
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    相关资源
    最近更新 更多