我很困惑,只是一个简单的问题。我有一些代码循环通过ssis包中的数据行转换时区,它在一行失败,我不知道为什么。
完整的错误消息是:
提供的DateTime表示无效时间。例如,当向前调整时钟时,跳过的时间段内的任何时间都是无效的。
我运行转换时间的代码是:
DateTime easternstandardtime = Row.UniversalTime;
TimeZoneInfo timeZoneGMT = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
TimeZoneInfo timeZoneEST = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
easternstandardtime = TimeZoneInfo.ConvertTime(Row.UniversalTime, timeZoneGMT, timeZoneEST);
Row.StandardEasternTime = easternstandardtime;
代码在第2行到最后一行(转换时间)失败。 Row.UniversalTime
的值为3/27/2016 1:10:03 AM
。这怎么不行?变量的完整统计数据如下。对我来说奇怪的是文件的其余部分处理得很好,日期时间都很相似。不确定为什么它随机炸毁这样的值。有什么想法吗?
Full var stats:
?Row.UniversalTime
{3/27/2016 1:10:03 AM}
Date: {3/27/2016 12:00:00 AM}
Day: 27
DayOfWeek: Sunday
DayOfYear: 87
Hour: 1
Kind: Unspecified
Millisecond: 0
Minute: 10
Month: 3
Second: 3
Ticks: 635946378030000000
TimeOfDay: {01:10:03}
Year: 2016
答案 0 :(得分:2)
由于错误消息 有些 暗示,您尝试在实际不存在的时间内进行转换。
http://www.timeanddate.com/news/time/europe-starts-dst-2016.html
欧洲大多数国家/地区将于01:00 UTC向前推进1小时
所以,如果大多数欧洲国家在凌晨1点(格林尼治标准时间)前进,并且你试图在01:10转换格林尼治标准时间,那么这个时间实际上并不存在。夏令时调整。似乎是您的问题。