【发布时间】:2017-06-08 18:22:23
【问题描述】:
使用下面的代码,我正在尝试将此 datetime 字符串转换为本地 DateTime
private DateTime ConvertToLocalTime(string datetimestring)
{
DateTime timeUtc = DateTime.Parse(datetimestring);
TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, cstZone);
return cstTime;
}
这是我得到的异常:
在 System.TimeZoneInfo.ConvertTime(DateTime dateTime, TimeZoneInfo sourceTimeZone, TimeZoneInfo destinationTimeZone, TimeZoneInfoOptions flags, CachedData cachedData) 在
System.TimeZoneInfo.ConvertTimeFromUtc(DateTime dateTime, TimeZoneInfo destinationTimeZone)转换无法完成,因为提供的 DateTime 没有 Kind 属性设置正确。例如,当 Kind 属性为
DateTimeKind.Local时, 源时区必须是 TimeZoneInfo.Local。
ConvertTimeFromUtc 的示例看起来与我的代码一模一样,只是我将此字符串解析为 timeUtc:
2017-01-23T05:00:00+00:00
如果我这样调用 Parse:
DateTime.Parse(datetimestring, null, System.Globalization.DateTimeStyles.RoundtripKind);
timeUtc.Kind.ToString() 返回“本地”
那么,我该如何补救呢?时间将发送给我 UTC。
【问题讨论】:
标签: c#