これは期待どおりに動作することを示すサンプルです。つまり、DST変換を行います。
DateTime dt1 = new DateTime(2016, 06, 01, 08, 00, 00, DateTimeKind.Unspecified); // Daylight saving time
DateTime dt2 = new DateTime(2016, 12, 01, 08, 00, 00, DateTimeKind.Unspecified); // Standard time
var dt1Converted = TimeZoneInfo.ConvertTimeToUtc(dt1,
TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));
var dt2Converted = TimeZoneInfo.ConvertTimeToUtc(dt2,
TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));
var diff1 = (dt1Converted - dt1).TotalHours;
var diff2 = (dt2Converted - dt2).TotalHours;
Console.WriteLine($"dt1: {dt1}, converted: {dt1Converted}, diff: {diff1}");
Console.WriteLine($"dt2: {dt2}, converted: {dt2Converted}, diff: {diff2}");
出力:
dt1: 2016-06-01 08:00:00, converted: 2016-06-01 12:00:00, diff: 4
dt2: 2016-12-01 08:00:00, converted: 2016-12-01 13:00:00, diff: 5
実際にESTの場合、5時間を追加することができます。しかし、東部時間になる可能性がより高いと思われます。時にはEST、場合によってはEDTです。その時点で、あなたは正確に何かを知る必要があります*どの東部時間、さまざまな時代のET移行の異なる時として、または歴史的に行っている... –
ありがとうジョン。 5時間を追加するのではなく、夏時間を考慮する必要はありませんか? – Bob
これは私のコメントの要点でした。あなたはEastern * Standard * Time、no ...から変換することはできませんでしたが、 "時々東部標準時間、時には東部夏時間"から変換している場合は、そうします。東部標準時と東部標準時の間には大きな違いがあります。 –