忽略.NET中的DST(夏令时)

Eij*_*iji 5 .net c# dst

我试图将String转换为Datetime对象,而不修改它并向Datetime对象添加额外的小时/偏移量.

这是代码:

string dateStr = "2011-03-18T12:07:00.000+10:00"; //Convert this string to datetime AS IS

DateTime date = Convert.ToDateTime(dateStr);

Console.WriteLine("Original string: " + dateStr);
Console.WriteLine("date toString:   " + date.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffK"));
Run Code Online (Sandbox Code Playgroud)

输出:

Original string: 2011-03-18T12:07:00.000+10:00
date toString:   2011-03-18T13:07:00.000+11:00
Run Code Online (Sandbox Code Playgroud)

如果有人可以指出我如何可以忽略DST或者甚至简单地将日期转换回我想要的Datetime对象,那将非常感激.

走下修改日期时间的路径: 我已经尝试将Datetime转换回来,但我无法弄清楚如何更改Datetime对象中的时区以及当我使用DatetimeOffset对象执行此工作时,当我调用DatetimeOffset.Datetime时它返回没有偏移量的Datetime

小智 0

.NET框架中的TimezoneInfo类可以提供答案(http://msdn.microsoft.com/en-us/library/system.timezoneinfo.aspx

string dateStr = "2011-03-18T12:07:00.000+10:00"; //Convert this string to datetime AS IS

DateTime localDateTime = DateTime.Parse(date); 

DateTime utcDateTime = localDateTime.ToUniversalTime();
string estKey = "Eastern Standard Time";
TimeZoneInfo estTimeZone = TimeZoneInfo.FindSystemTimeZoneById(estKey);
DateTime estDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, estTimeZone);

Console.WriteLine("Original string: " + dateStr);
Console.WriteLine("date toString:   " + estDateTime);
Run Code Online (Sandbox Code Playgroud)