Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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
C# TimeZoneInfo.GetSystemTimeZones()如何仅为特定国家/地区代码选择条目?_C#_.net_Asp.net - Fatal编程技术网

C# TimeZoneInfo.GetSystemTimeZones()如何仅为特定国家/地区代码选择条目?

C# TimeZoneInfo.GetSystemTimeZones()如何仅为特定国家/地区代码选择条目?,c#,.net,asp.net,C#,.net,Asp.net,TimeZoneInfo.GetSystemTimeZones提供所有时区的枚举。问题是如何仅为特定国家/地区代码选择条目。我知道UTC偏移量和国家代码,需要能够选择正确的时区值。来一点Linq魔术怎么样 var zones = from tz in TimeZoneInfo.GetSystemTimeZones() where tz.Id = "xxx" select tz; 将xxx替换为您所需的时区…: 首先,您会发现,由于夏令时的变化以及其他地区的偏差,您不能简单地使用UTC偏移量。如

TimeZoneInfo.GetSystemTimeZones提供所有时区的枚举。问题是如何仅为特定国家/地区代码选择条目。我知道UTC偏移量和国家代码,需要能够选择正确的时区值。

来一点Linq魔术怎么样

var zones = from tz in TimeZoneInfo.GetSystemTimeZones() where tz.Id = "xxx" select tz;

将xxx替换为您所需的时区…:

首先,您会发现,由于夏令时的变化以及其他地区的偏差,您不能简单地使用UTC偏移量。如果您提供的UTC偏移量是当前偏移量,并且您定期轮询它,那么您可以使用它吗

无论如何,我认为国家代码+UTC不会很容易,因为您肯定已经知道以下原因:

时区与国家之间存在多对多关系

虽然东京标准时间很可能只是日本时间,或者至少,JP和UTC+9:00可以简单地为您提供东京标准时间,但中亚标准时间呢?当然,如果你有一张每一个国家到每一个时区的地图,你可能会在这里找到某个地方

同一国家/地区的同一UTC偏移可以产生不同的时区

例如,在澳大利亚,昆士兰-布里斯班不遵守夏令时,而其他东部各州则遵守夏令时。这将产生澳大利亚东部标准时间和澳大利亚东部标准时间,作为具有相同国家和UTC偏移量的独立时区

UTC以外通常存在区域差异

由于它们的相关性较低,我不确定您的用例有多精确,因此您可能不太关心这些问题,但也存在一些异常情况,例如位于多个时区边界上的城镇会影响UTC或类似的平均值。中西部标准时间就是一个例子


然而,您可能会发现这个现有的感兴趣的问题,它产生了这个链接。假设您提供了足够的信息,您可能能够使用此数据解析时区,或者至少从可能的选项中对用户进行最佳猜测或查询?如果这仍然有用/可能的话。

这也不能回答这个问题。原始问题有以下可用参数:UTC偏移量为-xx:xx格式,国家代码和城市。此信息来自geo ip服务。他们没有提供.NET 4格式的名称来进行这种比较。@alexm-如果这不能回答您的问题,为什么要接受答案?@Graphain抱歉,我仍然熟悉所有这些按钮-撤消。你的回答是最恰当的,谢谢you@alexm,令人失望的是,我的答案就在这里。如果这个周末我觉得无聊,我可能会在Codeplex上放些东西来解决这个问题。嗯,投了反对票,不知道为什么?如果这个答案不准确,请留下评论。撤消,抱歉。我一定读过别人的答案。您是正确的,对于国家和特定偏移量,可能会有多个时区结果。在我的用例中,此逻辑仅用于猜测匿名用户显示日历事件条目的时间。一旦他们注册,他们必须选择他们的时区,这样我就没有问题了。正如我在回答中提到的,国家代码+UTC偏移量不足以隔离一个时区值。即使它可能无法100%识别它,至少它将限制为1-2个或更多的结果。在大多数情况下,这已经足够了。事实上,如果筛选结果大于1,您可以提示用户从值列表中选择它。但是没有TimeZoneInfo对象的任何国家和地区标识是一个巨大的失误!考虑到这一点,我会加载我在问题中链接的一个DBs,这样你就有了国家代码+UTC->可能时区的地图,然后从那里开始。这不是最简单的,但如果这是一个重要的要求,也不应该太难。