1

私が開発しているWebアプリケーション(Ruby on Rails)では、ユーザーは世界中の任意の場所の現地時間を指定できます。(その場所は、ユーザーの場所やサーバーの場所とは関係ありません。)

また、その場所で夏時間が使用されている場合、ユーザーはその時間を入力します。指定された夏時間からその場所の夏時間なしの現地時間を取得する必要があります。

例:サーバーはサンフランシスコにあります。ユーザーはニューヨークにいます。冬には、ユーザーはミネアポリスの夏時間(夏時間あり)の現地時間を入力します。そして、夏時間のオフセットなしでミネアポリスの同等の現地時間を取得する必要があります。ミネアポリスで夏時間が使用されているかどうかについての情報がないとします。

ユーザーは世界中の任意の場所を指定できるため、その場所が夏時間を使用しているかどうかはわかりません。また、UTCオフセット情報自体は、夏時間にあるかどうかを示していません。

これどうやってするの?

何か助けていただければ幸いです。

4

1 に答える 1

1

olson TZデータベース(tzinfo gemから入手可能)には、各場所で夏時間が使用されているかどうか(およびその期間がいつ開始/終了するか)に関する情報が含まれています。通常、生のutcオフセットではなく、提供されるタイムゾーンオブジェクトを使用する必要があります。タイムゾーンオブジェクトを取得すると、local_to_utcメソッドが変換を実行し、必要に応じてDSTを適用します。

唯一のあいまいなケースは、時計が戻ったときです。1年に1時間あり、その間に現地時間が2つの異なる時点に対応する可能性があります。たとえば英国では、10月末に時計が1時間戻って1:59:59になります。ユーザーが現地時間の1:30:00と言った場合、それが1番目か2番目かはわかりません。 30。Tzinfoは、独自のロジックに基づいて選択できるように、両方の可能性を教えてくれます。

于 2012-07-21T22:56:37.920 に答える