Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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
是否有我可以转换为“a”的方法;澳大利亚/墨尔本“;将时区转换为某个.net基类库对象?_.net_Zoneinfo - Fatal编程技术网

是否有我可以转换为“a”的方法;澳大利亚/墨尔本“;将时区转换为某个.net基类库对象?

是否有我可以转换为“a”的方法;澳大利亚/墨尔本“;将时区转换为某个.net基类库对象?,.net,zoneinfo,.net,Zoneinfo,我有一些来自第三方的数据,其中包括一些字符串语言属性数据。检索到的一些示例数据如下所示: “澳大利亚/墨尔本” 当我调查属性数据类型的基础时,它是一个区域信息(tz数据库/Olson数据库)。那是Wtf吗?我在谷歌上搜索了一下,这是信息 听起来很多主要平台都在使用它。。。但不是.NET 因此,在我重新发明轮子(或者更确切地说,从codeplex站点更新代码以将db列表嵌入dll)之前,.NET基类库中是否已经存在此功能?将其转换为GMT? 查找+x小时或-x小时,然后从存储的日期/时间

我有一些来自第三方的数据,其中包括一些
字符串语言
属性数据。检索到的一些示例数据如下所示:

“澳大利亚/墨尔本”

当我调查属性数据类型的基础时,它是一个区域信息(tz数据库/Olson数据库)。那是Wtf吗?我在谷歌上搜索了一下,这是信息

听起来很多主要平台都在使用它。。。但不是.NET

因此,在我重新发明轮子(或者更确切地说,从codeplex站点更新代码以将db列表嵌入dll)之前,.NET基类库中是否已经存在此功能?

将其转换为GMT? 查找+x小时或-x小时,然后从存储的日期/时间中减去偏移量。 在你的例子中,减去10,因为墨尔本是+10GMT

这是一个区域信息(tz数据库/Olson 数据库)。那是Wtf吗

这是一种便携的、相当标准的表示时区的方法。遗憾的是.NET没有正确地支持它

您正在使用.NET3.5吗?如果是这样的话,
TimeZoneInfo
类是我们得到的最好的支持,但是从Olson名称转换为Windows名称可能很棘手。理想情况下,您需要将Olson ID转换为Windows使用的ID。。。不过我不知道有没有

编辑:经过一点挖掘,有几个链接:

  • 具有Win32 ID和Olson ID(,)之间的映射文件
  • Unicode网站有一个

我不知道这些更新的频率有多高,但它们很可能是您的最佳选择。

在代码项目上有一个很棒的.Net小库,它正好满足您的需要:

我在几个与谷歌API对话的项目中使用了它,因为它们的所有时区都是ZoneInfo/Olsen数据库格式


我还写了一篇关于设置它的博文:

没有提供完整的时区信息。时区不仅仅是一个补偿。谢谢乔恩的回答。我担心.NET不支持它。。所以我将修改codeplex项目,将zoneinfo db嵌入到dll中,这样它就可以移植了。如果bcl中没有任何内容,我不介意从olson->TimeZoneInfo转换。干杯很抱歉从死里复活了这篇旧文章。。。但是Jon,你知道为什么BCL团队不支持区域信息吗?这是因为数据可以更改吗?如果是这样的话,正常的windows时钟/夏令时不是也有同样的问题吗。。这是支持的??我认为与其说是BCL团队,不如说是Windows本身——基本上,这是一种不同的“寻址”时区的方式,BCL团队选择了Windows方式(可以理解,尽管令人恼火)