我创建了这个方法来将 DateTime 从 UTC 转换为另一个时区
public static DateTime GetDateTimeFromUtcTo(string timeZoneName, DateTime time)
{
DateTime newDateTime = DateTime.SpecifyKind(time, DateTimeKind.Unspecified);
TimeZoneInfo newTzi = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName);
bool isDaylight = newTzi.IsDaylightSavingTime(time);
TimeZoneInfo gmtTzi = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
if (!gmtTzi.Equals(newTzi))
{
newDateTime = TimeZoneInfo.ConvertTime(newDateTime, gmtTzi, newTzi);
}
if (isDaylight)
{
newDateTime = newDateTime.AddHours(1);
}
return newDateTime;
}
timeZoneName
当= "E. South America Standard Time" (--03:00 GMT) 和 time
= "16/05/2013 20:00:00" (UTC 时间)时,此方法无法正常工作。
正确的日期时间必须是“16/05/2013 17:00:00”,但我得到“16/05/2013 16:00:00”。为什么?