是否有任何传递的方法接受UTC的timezoneoffset并在C#中计算时区?

我正在调用一个标准化给定地址的服务,并给出UTC偏移结果的时区(例如:-5:00等)。

C#中是否有一个函数接受UTC的timezoneoffset并计算时区(CST,EST,PST等三个字符)?

不,这是任何语言都不可能的要求,因为:

  1. 许多不同的时区共享相同的偏移量。

  2. 时区缩写没有标准。 有很多重叠和含糊不清。 例如,“CST”至少有5种不同的含义,我知道。

  3. 即使您将自己局限于美国,也无法可靠地区分偏移量。 例如,-5可以是EST,也可以是CDT。

    每年甚至有一个小时,EST和CDT在同一时间同时生效。 例如,这发生在2014年11月2日,当时美国东部时间凌晨1点和CDT凌晨1点同时生效 ,并且都使用了UTC-5偏移量。

我正在调用一个标准化给定地址的服务,并给出UTC偏移结果的时区(例如:-5:00等)。

除非服务返回特定日期和时间的偏移量,否则它可能对您撒谎。 也许它正在返回当前的偏移,但这不是固定的。 相同的位置可以循环通过多个不同的偏移。

IMO,像这样的服务不应该尝试解决偏移,而应该返回时区标识符,例如America/New_York

你应该阅读时区标签wiki ,你也可能对这篇文章感兴趣。

如果有可能在C#中这样做,我会认为NODA Time会这样做。