【发布时间】:2009-08-10 10:50:39
【问题描述】:
我需要知道如何将 GMT 时区格式的日期时间转换为其他格式,例如 C#、asp.net 2.0 和 dot net framework 2.0 中的东部、太平洋、山区和印度时区格式。
【问题讨论】:
我需要知道如何将 GMT 时区格式的日期时间转换为其他格式,例如 C#、asp.net 2.0 和 dot net framework 2.0 中的东部、太平洋、山区和印度时区格式。
【问题讨论】:
不幸的是,使用 .NET 2.0 时,您大部分时间都被塞满了。您需要使用 P/Invoke 创建TimeZone 类的实例。从 .NET 3.5 开始,它好多了 - TimeZoneInfo 允许您获取非本地区域。我似乎记得后者对历史时区信息也有更好的支持,而不仅仅是 DST 何时更改的一对规则。
您可以使用GetTimeZoneInformation 获取信息,但这比较难看。很可能有某种方法可以使用 P/Invoke 来为您进行转换……尽管它仍然可能很麻烦。
使用 .NET 2.0 的要求有多严格?使用 .NET 3.5 可以为自己省去很多的麻烦...
【讨论】:
真的,您需要 .NET 3.5 来解决这个问题...
(我知道您询问过 .NET 2.0,但这个答案可能对将来搜索此主题的人有帮助)
TimeZoneInfo mountain = TimeZoneInfo.FindSystemTimeZoneById(
"US Mountain Standard Time");
DateTime utc = DateTime.UtcNow;
DateTime local = TimeZoneInfo.ConvertTimeFromUtc(utc, mountain);
在那之前……痛苦。您可以维护自己的偏移量列表,但您必须担心 DST。
【讨论】:
编写如下方法,调用即可轻松转换。 它是印度标准时间
public DateTime IndianStandard(DateTime currentDate)
{
TimeZoneInfo mountain = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
DateTime utc = currentDate;
return TimeZoneInfo.ConvertTimeFromUtc(utc, mountain);
}
【讨论】: