Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有任何交付的方法采用UTC的时区偏移量并以C#计算时区?_C#_Asp.net_Datetime_Timezone - Fatal编程技术网

是否有任何交付的方法采用UTC的时区偏移量并以C#计算时区?

是否有任何交付的方法采用UTC的时区偏移量并以C#计算时区?,c#,asp.net,datetime,timezone,C#,Asp.net,Datetime,Timezone,我正在呼叫一个服务,该服务标准化了给定的地址,并以UTC偏移量给出了结果的时区(例如:-5:00等) 在C#中是否有一个函数,它接受UTC的时区偏移并计算时区(三个字符,如CST、EST、PST)?如果有机会在C#中这样做,我想我会这样做。否。这在任何语言中都是不可能的请求,因为: 许多不同的时区共享相同的偏移量 时区缩写没有标准。有很多重叠和模糊之处。例如,据我所知,“CST”至少有5种不同的含义 即使您将自己限制在美国,您也无法可靠地区分补偿。例如,-5可以是EST,也可以是CDT 每年甚至

我正在呼叫一个服务,该服务标准化了给定的地址,并以UTC偏移量给出了结果的时区(例如:-5:00等)


在C#中是否有一个函数,它接受UTC的时区偏移并计算时区(三个字符,如CST、EST、PST)?

如果有机会在C#中这样做,我想我会这样做。

否。这在任何语言中都是不可能的请求,因为:

  • 许多不同的时区共享相同的偏移量

  • 时区缩写没有标准。有很多重叠和模糊之处。例如,据我所知,“CST”至少有5种不同的含义

  • 即使您将自己限制在美国,您也无法可靠地区分补偿。例如,-5可以是EST,也可以是CDT

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

  • 我正在呼叫一个服务,该服务标准化了给定的地址,并以UTC偏移量给出了结果的时区(例如:-5:00等)

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

    在国际海事组织,类似的服务不应该尝试解决偏移,而是应该返回时区标识符,例如
    America/New_York


    您可能应该阅读,并且您可能也感兴趣。

    小心-不可能将偏移转换为时区-某些时区重叠偏移,并且偏移与夏令时不一致。您是对的,没有正式的缩写列表。但是,TimeZoneInfo.GetSystemTimeZones将提供windows注册表中的时区列表。TimeZoneInfo没有问题中指定的缩写,但是它们有一个DisplayName和一个StandardName@Mick. 是的,关于这一点还有很多其他问题。但是我不明白这与所问的问题有什么关系。@马特,我已经联系了我们的地址服务提供商,根据他们的说法,偏移量是在给定的时间计算的。我们使用的这项服务仅限于美国。我们有一个DB表,在那里我们每年都可以节省日光灯。请让我知道,如果有什么可以帮助我通过限制我们的结果来计算时区的话。正如我在#3的回答中所说的,它仍然不可靠。如果你得到了<代码> -05:00 <代码>的结果,恰好是2014年11月2日凌晨1点到下午1点59分59分。在这种情况下,
    -05:00
    可以是EST或CDT。这是因为在美国,DST不会同时发生。每个时区在他们自己的本地时间中进行切换,创建一个小时,其中相邻的时区共享相同的时间,一个小时分别是2小时而不是1小时。也考虑到Pacific时区在夏时制期间使用<代码> -07:00 < /代码>,但是大部分亚利桑那州(在山峰时区)。不使用夏令时,全年的偏移量为
    -07:00
    。因此,如果你在夏天从你的服务中得到一个值
    -07:00
    ,那么它可能意味着PDT或MST。野田佳彦很棒,但这里没有魔力。可以获取时区的偏移,但不能获取偏移的时区。