2016-03-28 5 views
3

私はうんざりしているだけの簡単な質問です。私はタイムゾーンを変換するためにssisパッケージ内のdatarowsをループするいくつかのコードを持っており、それは行に失敗していると私は理由が分からない。C#何千もの行にタイムゾーンを変換しています。ランダムに「取得されたDateTimeが無効な時刻を表しています。

完全なエラーメッセージは、次のとおり

指定された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; 

コードは、最後の行(変換時間)に第二に失敗しました。 Row.UniversalTimeの値は3/27/2016 1:10:03 AMです。どのようにこれは大丈夫ですか?変数の完全な統計は以下の通りです。私にとって奇妙なのは、ファイルの残りの部分がうまく処理され、datetimesがすべて似ているということです。なぜこのような値で無作為に爆発しているのか分かりません。何か案は?

全VAR統計:ややが暗示するエラーメッセージとして

?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

[特定のDateTime値に対してTimeZoneInfo.ConvertTimeToUtcが発生したときの例外コール](http://stackoverflow.com/questions/2416439/exception-calling-when-timezoneinfo-converttimetoutc-for-certain-datetime-values) –

答えて

2

は、あなたが実際には存在しない時に変換を行うことをしようとしています。

http://www.timeanddate.com/news/time/europe-starts-dst-2016.html

ほとんどの欧州諸国は1時(GMT)で前方春、あなたならばヨーロッパで

ほとんどの国は」ので、1:00 UTC

で前方1時間を春になります01:10にあるGMT時刻を変換しようとすると、その時刻はDST調整のとおりには実際には存在しません。あなたの問題だと思う。

+0

ありがとうございました。私はヨーロッパのdstについても考えなかった。ありがとう。 – user3494110

関連する問題