我需要知道如何将GMT时区格式的日期时间转换为其他格式,如东部,太平洋,山区和印度。 。c#中的时区格式,asp.net2.0和dot net frame work 2.0。将日期时间从GMT转换为其他(东部,山区,太平洋,印度,..)格式
在此先感谢
Rupa。
我需要知道如何将GMT时区格式的日期时间转换为其他格式,如东部,太平洋,山区和印度。 。c#中的时区格式,asp.net2.0和dot net frame work 2.0。将日期时间从GMT转换为其他(东部,山区,太平洋,印度,..)格式
在此先感谢
Rupa。
真的,你想为这个.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。
不幸的是,使用.NET 2.0时,你大部分都被塞进了内存中。您需要使用P/Invoke来创建TimeZone
类的实例。从.NET 3.5开始,它好得多 - TimeZoneInfo
允许您获取非本地区域。我似乎记得后者对历史时区信息也提供了更好的支持,而不仅仅是当DST发生变化时的一对规则。
您可以使用GetTimeZoneInformation获得信息,但这相对难看。可能有一些方法可以使用P/Invoke来为您进行转换...虽然它仍然可能很毛茸茸。
要求使用.NET 2.0有多坚定?你会保存自己很多使用.net 3.5麻烦 ...
写下面的方法,所以可以通过调用它来轻松转换。 它为印度标准时间
public DateTime IndianStandard(DateTime currentDate)
{
TimeZoneInfo mountain = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
DateTime utc = currentDate;
return TimeZoneInfo.ConvertTimeFromUtc(utc, mountain);
}
这里看看http://stackoverflow.com/questions/1108644/c-making-sure-datetime-now-returns-a-gmt-1-time/1108670# 1108670 – ThePower 2009-08-10 11:05:55