日期时间转换问题[UTC - >山 - > UTC]

时间:2016-03-24 21:52:21

标签: c# datetime dst

使用原始UTC的服务器响应:

TimeSlot:“2009-11-01T06:00:00Z”
TimeSlot:“2009-11-01T06:05:00Z”
TimeSlot:“2009-11-01T06:10:00Z”
TimeSlot:“2009-11-01T06:15:00Z”
TimeSlot:“2009-11-01T06:20:00Z”
TimeSlot:“2009-11-01T06:25:00Z”
TimeSlot:“2009-11-01T06:30:00Z”
TimeSlot:“2009-11-01T06:35:00Z”
TimeSlot:“2009-11-01T06:40:00Z”
TimeSlot:“2009-11-01T06:45:00Z”
TimeSlot:“2009-11-01T06:50:00Z”
TimeSlot:“2009-11-01T06:55:00Z”
TimeSlot:“2009-11-01T07:00:00Z”
TimeSlot:“2009-11-01T07:05:00Z”
TimeSlot:“2009-11-01T07:10:00Z”
TimeSlot:“2009-11-01T07:15:00Z”
TimeSlot:“2009-11-01T07:20:00Z”
TimeSlot:“2009-11-01T07:25:00Z”
TimeSlot:“2009-11-01T07:30:00Z”
TimeSlot:“2009-11-01T07:35:00Z”
TimeSlot:“2009-11-01T07:40:00Z”
TimeSlot:“2009-11-01T07:45:00Z”
TimeSlot:“2009-11-01T07:50:00Z”
TimeSlot:“2009-11-01T07:55:00Z”

TimeSlot:“2009-11-01T08:00:00Z”
TimeSlot:“2009-11-01T08:05:00Z”
TimeSlot:“2009-11-01T08:10:00Z”
TimeSlot:“2009-11-01T08:15:00Z”
TimeSlot:“2009-11-01T08:20:00Z”
TimeSlot:“2009-11-01T08:25:00Z”
TimeSlot:“2009-11-01T08:30:00Z”
TimeSlot:“2009-11-01T08:35:00Z”
TimeSlot:“2009-11-01T08:40:00Z”
TimeSlot:“2009-11-01T08:45:00Z”
TimeSlot:“2009-11-01T08:50:00Z”
TimeSlot:“2009-11-01T08:55:00Z”
TimeSlot:“2009-11-01T09:00:00Z”

使用下面的代码后,移动DST间隔:

DateTime.SpecifyKind(time, DateTimeKind.Utc).ConvertUtcTimeToMountainTime().ConvertMountainTimeToUtcTime() 

回复

TimeSlot:“2009-11-01T06:00:00Z”
TimeSlot:“2009-11-01T06:05:00Z”
TimeSlot:“2009-11-01T06:10:00Z”
TimeSlot:“2009-11-01T06:15:00Z”
TimeSlot:“2009-11-01T06:20:00Z”
TimeSlot:“2009-11-01T06:25:00Z”
TimeSlot:“2009-11-01T06:30:00Z”
TimeSlot:“2009-11-01T06:35:00Z”
TimeSlot:“2009-11-01T06:40:00Z”
TimeSlot:“2009-11-01T06:45:00Z”
TimeSlot:“2009-11-01T06:50:00Z”
TimeSlot:“2009-11-01T06:55:00Z”
TimeSlot:“2009-11-01T08:00:00Z”
TimeSlot:“2009-11-01T08:00:00Z”
TimeSlot:“2009-11-01T08:05:00Z”
TimeSlot:“2009-11-01T08:05:00Z”
TimeSlot:“2009-11-01T08:10:00Z”
TimeSlot:“2009-11-01T08:10:00Z”
TimeSlot:“2009-11-01T08:15:00Z”
TimeSlot:“2009-11-01T08:15:00Z”
TimeSlot:“2009-11-01T08:20:00Z”
TimeSlot:“2009-11-01T08:20:00Z”
TimeSlot:“2009-11-01T08:25:00Z”
TimeSlot:“2009-11-01T08:25:00Z”
TimeSlot:“2009-11-01T08:30:00Z”
TimeSlot:“2009-11-01T08:30:00Z”
TimeSlot:“2009-11-01T08:35:00Z”
TimeSlot:“2009-11-01T08:35:00Z”
TimeSlot:“2009-11-01T08:40:00Z”
TimeSlot:“2009-11-01T08:40:00Z”
TimeSlot:“2009-11-01T08:45:00Z”
TimeSlot:“2009-11-01T08:45:00Z”
TimeSlot:“2009-11-01T08:50:00Z”
TimeSlot:“2009-11-01T08:50:00Z”
TimeSlot:“2009-11-01T08:55:00Z”
TimeSlot:“2009-11-01T08:55:00Z”

TimeSlot:“2009-11-01T09:00:00Z”

以下是使用的方法

TimeZoneInfo MountainTime = TimeZoneInfo.FindSystemTimeZoneById("Mountain Standard Time");

public static DateTime ConvertUtcTimeToMountainTime(this DateTime date)
{
    return TimeZoneInfo.ConvertTimeFromUtc(date, MountainTime);
}

public static DateTime ConvertMountainTimeToUtcTime(this DateTime date)
{
    date = DateTime.SpecifyKind(date, DateTimeKind.Unspecified);
    return TimeZoneInfo.ConvertTimeToUtc(date, MountainTime);
}

这里出了什么问题?

0 个答案:

没有答案