将日期时间从GMT转换为其他(东部,山地,太平洋,印度,...)格式

时间:2009-08-10 10:50:40

标签: c# datetime

我需要知道如何将GMT时区格式的日期时间转换为其他格式,如东部,太平洋,山地和印度.. c#,asp.net2.0和dot net frame work 2.0中的时区格式。< / p>

先谢谢

鲁帕。

3 个答案:

答案 0 :(得分:2)

不幸的是,使用.NET 2.0大部分都是填充的。您需要使用P / Invoke来创建TimeZone类的实例。从.NET 3.5开始,它会更好 - TimeZoneInfo允许您获取非本地区域。我似乎记得后者对历史时区信息的支持也更好,而不仅仅是DST改变时的一对规则。

您可以使用GetTimeZoneInformation获取信息,但这相对比较难看。可能有一些方法使用P / Invoke来为你进行转换...虽然它仍然可能很毛茸茸。

使用.NET 2.0的要求有多坚定?使用.NET 3.5,你可以省去一个很多的麻烦......

答案 1 :(得分:1)

真的,你想要.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。

答案 2 :(得分:0)

编写如下方法,因此可以通过调用轻松转换。 它用于印度标准时间

public DateTime IndianStandard(DateTime currentDate)
{
    TimeZoneInfo mountain = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
    DateTime utc = currentDate;
    return TimeZoneInfo.ConvertTimeFromUtc(utc, mountain);
}