-1

ToUniversalTime の仕組みに関する関連する質問があります。しかし、時間変換に関する関連情報は、過去に時間変換に関連するデータベースがあることを示しています。ToUniversalTime私の質問は、たとえば 2070 年に DST がいつ変更されるかをどのように予測し、知ることができるかということです。

4

1 に答える 1

2

ToUniversalTime私の質問は、たとえば 2070 年に DST がいつ変更されるかをどのように予測し、知ることができるかということです。

できません。私たちの世界の政府が彼らのタイムゾーンで何をするかを決める未来について、特別な洞察はありません.

世界の現地時間は、各地域が独自の基準で設定するタイム ゾーン規則によって決定されます。これらは、実際的、政治的、または宗教的など、さまざまな理由で常に変化しています。このための包括的な国際統治機関はなく、彼らが従わなければならない規則もありません。

実際には、ほとんどの政府は、これらの変更を行う際に何らかの通知を行う傾向があります。通常、それらは少なくとも 1 年はずれています。たとえば、米国は 2005 年に変更が 2007 年に発効すると発表しました。

しかし、常にそうであるとは限りません。たとえば、2011 年にエジプトでは、サマータイムが実施予定のわずか 9 日前にキャンセルされました。

これらの変更はすべて、コンピューティングで使用する 2 つの一般的なタイム ゾーン データベースによって追跡およびキャプチャされます。これらについては、タイムゾーン タグ wikiで読むことができます。急な変更の通知は、誰もが急いで最新情報を入手するために慌てなければならないことを意味します。そうしないと、データが不正確になる危険があります。

質問の核心に戻ると、将来のイベントをスケジュールするときは、意図したコンテキストが何であるかを知る必要があります。UTC で指定されている場合は、それがどの瞬間に発生するかを明確に知ることができます (うるう秒は無視します)。しかし、ほとんどの場合、現地時間とタイム ゾーンが与えられます。将来の日付の場合は、これらの値の両方を保持する必要があります。将来の UTC 変換を予測するには、変更される可能性があるというリスクが伴います。

日付が過ぎて初めて、変換の安定性が保証されます。しかし、実際にコード内でイベントをトリガーするようにスケジュールするにはどうすればよいでしょうか? まあ、1 つのアプローチは、おおよそのイベント時間に近づくまで変換を試みないことです。おそらく、1 週間のウィンドウが許容されます。もう 1 つのアプローチは、すべてをすぐに変換することですが、元のデータは保持します。更新されたタイム ゾーン情報を取得するたびに、変換を再計算できます。念のため、いつでも変換を再計算できます。アプリケーションの要件によって異なります。

余談ですが、これは .NET/C# に関する質問で、トルコにいるとのことなので、野田時間Europe/IstanbulIANA タイム ゾーンの使用を検討することを強くお勧めします。これはほんの一例です:

LocalDateTime ldt = new LocalDateTime(2013, 09, 17, 0, 0);
DateTimeZone tz = DateTimeZoneProviders.Tzdb["Europe/Istanbul"];
ZonedDateTime zdt = ldt.InZoneLeniently(tz);
Instant utc = zdt.ToInstant();
Debug.WriteLine(utc);             // 2013-09-16T21:00:00Z

TZDB がトルコの時間の変化についてどの程度知っているかに興味がある場合は、こちらを参照してください。対照的に、Windows レジストリを で調べると、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Turkey Standard Time\Dynamic DSTWindows が認識しているのは 2010 年以降のトルコでの変更のみであることがわかります。

于 2013-09-07T17:57:36.237 に答える