0

問題は、フレームワーク 3.5 がロシアが DayLightSavings をサポートする (true を返す) と述べていることにありますが、現在はそうではありません。もちろん、メソッドのアスカーへのオフセットが間違っています。

    var localTime = TimeZone.CurrentTimeZone;
    bool useDaylightSavingTime = localTime.IsDaylightSavingTime(DateTime.Now);

現在、ロシアのタイムゾーンをどのようにプロが解決していますか? 2012 年以降、DST はありません。これは、2019 年末まで適用され、使用されます。

【関連リンク@コネクト】
http://connect.microsoft.com/VisualStudio/feedback/details/686169/incorrent-utc-to-local-time-conversion-after-kb-2570791

【関連リンク WorldClock】
http://www.timeanddate.com/worldclock/timezone.html?n=166

4

1 に答える 1

3

これはすべて私のマシンでチェックアウトしているようです:

using System;

class Program {
    static void Main(string[] args) {
        var tz = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time");
        var now = tz.IsDaylightSavingTime(new DateTime(2013, 10, 8));
        Console.WriteLine("Today: {0}", now);
        var prev = tz.IsDaylightSavingTime(new DateTime(2011, 10, 8));
        Console.WriteLine("Two years ago: {0}", prev);
        Console.ReadLine();
    }
}

出力:

現在:偽
2 年前:真

.NET はレジストリからタイム ゾーン規則を取得します。Microsoft は、Windows Update を通じて定期的にローカル タイム ゾーン規則の変更を更新します。レジストリが最新であることを確認してください。Windows Update がこれらの更新プログラムを展開することを許可していない場合は、更新されない可能性があります。これを確認するには、Regedit.exe を実行し、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Russian Standard Time キーに移動します。「Dynamic DST」サブキーは、標準外のルールを保持します。私のマシンには 2010 年、2011 年、2012 年のエントリがあります。

于 2013-10-08T12:10:28.773 に答える