2

Windows で行うのではなく、C# アプリケーションで夏時間を制御しようとしています。(ここでは理由には触れません)。

そこで、日付と時刻の設定で「夏時間のために時計を自動的に調整する」のチェックマークを外しました(Windows7)

私が直面している問題を示すために、この小さなコードを書きました。

TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(TimeZoneInfo.Local.Id);
                                                    // "Romance Standard Time"
var rule = tzi.GetAdjustmentRules()[0];

System.Globalization.CultureInfo.CurrentCulture.ClearCachedData();
var timestampToWorkOn = DateTime.Now; 
Console.WriteLine("Timezone is: " + tzi.ToString());
Console.WriteLine("Timezone id is: " + tzi.Id);
Console.WriteLine("Timestamp right now: " + timestampToWorkOn.ToString("yyyy-MM-dd HH:mm"));
Console.WriteLine("Rule for change says: " + rule.DaylightTransitionEnd.TimeOfDay.ToString("HH:mm"));
Console.WriteLine("Is it dst: " + tzi.IsDaylightSavingTime(timestampToWorkOn));
Console.WriteLine("Is it ambiguous:" + tzi.IsAmbiguousTime(timestampToWorkOn));

dst から通常時間への移行は 3:00 に発生すると想定されているため、2:00 から 3:00 までの時間はあいまいであると思われます。しかし、1:54 でコードを実行した結果は次のようになります。

タイムゾーン: (UTC+01:00) ブリュッセル、コペンハーゲン、マドリッド、パリ
タイムゾーン ID: ロマンス標準時
現在のタイムスタンプ: 2013-10-27 01:54
変更のルール: 03:00
Is it dst: False
Isそれはあいまいです:True

私は何かが欠けているかもしれません。私は dst が true であり、ambiguous が false であると予想しますが、逆です。

概要を把握するのは難しいのですが、なぜこの動作が見られるのでしょうか?

4

1 に答える 1