2009-08-10 52 views

回答

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

不幸的是,使用.NET 2.0时,你大部分都被塞进了内存中。您需要使用P/Invoke来创建TimeZone类的实例。从.NET 3.5开始,它好得多 - TimeZoneInfo允许您获取非本地区域。我似乎记得后者对历史时区信息也提供了更好的支持,而不仅仅是当DST发生变化时的一对规则。

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

要求使用.NET 2.0有多坚定?你会保存自己很多使用.net 3.5麻烦 ...

0

写下面的方法,所以可以通过调用它来轻松转换。 它为印度标准时间

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