そのチェックのためのAPIがあるかどうか知っていますか?指定された日付が夏時間か冬季かをチェックするルーチン
答えて
GetTimeZoneInformationが必要です。
戻り値を調べて、夏時間がオンになっているかどうかを検出できます。また、夏時間と夏時間に切り替えるためのルールを含む構造体を埋め込みます。この構造体をいっぱいにしてUTC形式の任意の時刻を指定すると、その時刻が夏時間か標準時刻かを比較的簡単に計算できます。
でも、GetTimeZoneInformationとGetDynamicTimeZoneInformationは、の現在のタイムゾーンの設定を返します。現在のTZ(つまり、サーバーがどこにあるか)がチェックしたいTZでない場合はどうなりますか?
私はチェックアウト用の書籍を予約しているサーバーアプリケーションを持っているとしましょう。 「今すぐチェックしたい」または「今後datetimeにチェックアウトする必要があります」と言うことができます。チェックアウト時間は、ユーザーの現地時間で入力され、保存前にUTCに変換されます。ユーザーがチェックアウトのリストを取得すると、時間は表示のためにローカルに変換されます。
サーバーはニューヨークにあり、米国の標準DST規則のもとで運用されているものとします。タイムゾーンは東部アメリカに設定されています。現在は7/27/2009 15:30ですので、DSTはONです。
ニューヨークのユーザーは現地の日時を入力します。 ETからUTCへの変換 - 問題ありません。彼らは将来の日付を入力します。私は上記の2つのAPI呼び出しのうちの1つを使用してそれを把握します。
ただし、シドニーのユーザーはチェックアウトを予約したいと考えています。彼女はシドニーの現地時間帯に比べて2009年12月13日18時25分にチェックアウトを要求します。ローカルのTZ情報を使用することはできません - シドニーとNYは同じDSTルールに従っていません。シドニーの現在のTZ情報を読み込んで、任意の日付がDSTかどうかを調べるにはどうすればよいですか?
Win7およびServer2008/R2用のMS-Windowsには、新しい(ただしまだ不完全な)メソッドがあります。 KB 2731771を参照してください。ICUとBoost :: localeも参照してください。 Windowsルーチン(GetTimeZoneInformationForYear)では、最低年を取得する限り、UTCを変換している必要があります。幸運にも、私が知っている1月1日の周りにタイムゾーンがシフトしていません。 SystemTimeToTzSpecificLocalTime(Ex)を使用すると、ローカルシステムのタイムゾーンとは異なるタイムゾーンに適切に変換されたローカルタイムを取得できます。 これらのメソッドがないと、レジストリをスキャンして適切なタイムゾーン情報と動的情報を読み込み、SystemTimeToTzSpecificLocalTimeを呼び出す必要があります。 TZの設定がオーストラリア向けであっても、米国のDSTルールを使用するようなシステム(Windowsのようなもの)が多い(ほとんどの場合は間違っている)ものがあるため、_tzsetやlocaltimeのようなものは注意してください。
WindowsとLinuxの両方で、時間のためのすべての動的/歴史的DST規則を考慮に入れて、UTCtoLocal(const char * tzName、time_t inTime、struct tm * outTime)指定されたゾーン。 tzNameは、あなたが実行しているシステムに応じて、 "Central Standard Time"や "America/Chicago"のような適切な名前を取ることができます。のような2つの呼び出しのステップを許可したいと思うこともあります。 UTCtoLocal(const TIME_ZONE_INFORMATION * inTZInfo、time_t inTime、struct tm * outTime) これは、システムタイムゾーン情報をロードし、ライブラリがローカル/ UTC変換を実行するときに発生します。
- 1. 季節のウェブサイト、冬と夏の間で分割、最善のアプローチですか?
- 2. 季節(つまり夏/冬)に依存するハイパーリンク
- 3. Jboss Java日付夏時間
- 4. Ubuntu Amazon EC2夏時間付き日付
- 5. 指定された日付/時刻から指定された時間数を差し引いて新しい日付/時刻を取得する
- 6. イベントを繰り返す冬の時間/夏の時間を処理する
- 7. 日付の夏時間を決定するアルゴリズムはありますか?
- 8. Pythonでは、指定された時刻が夏時間にあるかどうかをチェックする方法はありますか?
- 9. ZonedDateTimeは夏時間の冬の同じタイムゾーンを使用しますか?
- 10. javascript夏時間変換なしの日付を作成する
- 11. 指定された時間
- 12. 夏時間付きPHP DateTime
- 13. 指定された時間/日付の空き状況を返します
- 14. タイムオフセットが夏時間にあるかどうかをチェックする方法は?
- 15. 夏時間に合わせて調整する日付フィルタ
- 16. 特定の日付が指定されていないR内の時間
- 17. 指定された日付から最初の日付を取得する
- 18. 指定された範囲の間のすべての日付
- 19. スケジュールされたジョブのタイミングで夏時間が発生する
- 20. 日付はJavaで指定された時間帯で指定してください
- 21. 指定された日付と現在の日付との間の差異
- 22. 指定された時間範囲の2つの日付間の経過時間
- 23. Djangoは指定された日付
- 24. 指定された日付の日を印刷するには?
- 25. 指定された期間に1日あたり最大2つの日付の間の日付差
- 26. 日付計算 - 夏時間(DST)とタイムゾーンの問題 - トルコ
- 27. 指定された時間を変更せずにJS日付のタイムゾーンを変更しますか?
- 28. 配列の指定された日付から日数を取得する
- 29. 間違った夏時間は、タイムゾーンオブジェクトから返さオフセット
- 30. 日付がpytzなしのタイムゾーンの夏時間であることを確認
Linuxに相当するものはありますか?または、それをカプセル化するlibをうまく処理しますか?ブーストを確認します;) – neuro
移行日の履歴を考慮に入れたい場合は注意してください。例えば。米国とオーストラリアは、最近、夏時間と通常時間の間で変更された日付と、2008年のタイムスタンプとは異なる規則のもとで2003年からのタイムスタンプが変更されました。 –
Boostには、Boost.Date_Time [1]タイムゾーンデータベースなどがあります。 私はそれを使用していないので、私はその品質を保証することはできません。 [1] http://www.boost.org/doc/libs/1_39_0/doc/html/date_time.html –