无论如何,我可以将“澳大利亚/墨尔本”时区转换为某个.net基类库对象吗?

时间:2009-03-19 11:32:28

标签: .net zoneinfo

我有来自第三方的一些数据,其中包含一些string Language属性数据。检索到的一些示例数据如下所示:

  

“澳大利亚/墨尔本”

当我调查属性数据类型所基于的内容时,它是区域信息(tz数据库/ Olson数据库)。那是什么?我用谷歌搜索,这是信息......

听起来它被许多主要平台使用......但不是.NET。

所以,在我重新发明轮子之前(或者更重要的是,更新代码复合站点中的代码以将db列表嵌入到dll中),这已经存在于.NET基类库中了吗?

3 个答案:

答案 0 :(得分:5)

  

这是一个区域信息(tz数据库/ Olson   数据库)。那是什么?

这是表示时区的便携式,非常标准方式。令人遗憾的是,.NET不能正确支持它,IMO。

您使用的是.NET 3.5吗?如果是这样,TimeZoneInfo类是我们获得的最佳支持,但从Olson名称转换为Windows名称可能会非常棘手。理想情况下,您希望从Olson ID转换为Windows使用的ID ...我不知道有可用的ID。

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

我不知道这些内容保持更新的频率,但它们可能是您最好的选择。

答案 1 :(得分:2)

在Code Project上有一个很棒的.Net库,可以完全满足您的需求:

http://www.codeproject.com/KB/locale/zoneinfo_dotnet_api.aspx

http://zoneinfo.codeplex.com/

我在几个与Google API交谈的项目中使用它,因为他们所有的时区都是ZoneInfo / Olsen数据库格式。

我还写了一篇关于设置它的博文:http://www.diaryofaninja.com/blog/2011/05/27/how-to-use-zoneinfotz-time-zones-in-net-applications

答案 2 :(得分:0)

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