オフセットは、他の(非DST対DST)に1日から変更する可能性があるため、あなたは、正確な日付を知らなくても正しくTimeZoneOffsetを扱うことができません。
正しい時刻を取得するのは簡単です(正しい日付がある場合)。DateTimeの適切なコンストラクタを使用します。
DateTime(int year, int month, int day, int hour, int minute, int second, System.DateTimeKind kind)
とし、System.DateTimeKind.Utc
と指定します。次に、UTC時刻としてタイムスタンプを取得してから、ToLocalTime()
を使用して、ローカルタイムゾーンで正しい時刻を取得できます。
難しい部分は私のようですが、あなたのデータから正しい日付を取得しています。 SUNDAYの意味は次のもの(2016-07-10)か、最後のもの(2016-07-03)ですか?これは、DSTの切り替えに近い日付の場合に特に重要です。これは、タイムスタンプが異なる可能性があるためです。
また、 '日曜日:23:00'のUTCは、一部のタイムゾーンで 'MONDAY:01:00'(またはその逆)になる可能性があることにも注意してください。だから、あなたの現地時間ではなく、UTCに基づいて日付の計算を行う必要があります。たとえば、現地時間では2016年7月1日01:00の月曜日ですが、これは日曜日2016-07-03 23:00(UTC)で、タイムスタンプSUNDAY:17:00を解釈して現地時間を使用します日曜日)は2016-07-03 19:00の代わりに2016-07-10 19:00になります。
DateTimeをまったく使用しないでください。明示的なオフセットでDateTimeOffsetを使用してください。結局のところ、Jsonはまた、オフセットを使用して –