私はtime-1.5.0.1
ライブラリを使用しています。純粋な関数で確実にPOSIXエポック秒をEST/EDT時間に変換する方法
私は、エポック秒を表す値が与えられます。 1449590820
は2015-12-08 11:07:00 -0500
に等しい。
Data.Timeモジュールを使用して、1449590820
をZonedTime
に変換したいと考えています。
utcToZonedTime :: TimeZone -> UTCTime -> ZonedTime
問題は、私は必要TimeZone
値を取得している:
私が使用したい機能がこれです。 Data.Time
の利用可能な機能は、環境からTimeZone
を取得するか、またはをEDT
またはEST
に明示的に構成する必要があります。
米国東部時間に設定されたサーバーでコードが実行される保証はないので、私はZonedTime
を与えるために環境に応じて避けたいと考えています。したがって、この機能を使用することは問題外である:
utcToLocalZonedTime :: UTCTime -> IO ZonedTime
だからそれは必要なTimeZone
入力を自分で構築するオプションを私に残します。
しかしEDT
ためTimeZone
はEST
ためTimeZone
と同じではありませんので、私は、夏時間が有効であるかどうかに応じて異なるTimeZone
を必要としています。 UTCTime
の値に応じてTimeZone
(EDT
またはEST
)を簡単に生成する方法はありますか(つまり、夏時間の範囲内にあるかどうか)。
純粋な関数を使用してこれを排他的に実行したいと強調したいと思います。
多分、私はtzinfo library in Rubyのハスケルアナログを探しています。
希望するタイムゾーンとUTC日時の値を渡し、渡されたゾーンに基づいて、夏時間に合わせて_and_時間を設定した値を受け取りますか? – 9000
@ 9000アメリカ東部時間帯のUTC時間の夏時間調整TimeZone値を取得できるだけで満足しています。 – dan
私は、ソースからの見栄えがよく、図書館は「EDT」と「EST」の2つの別々の時間帯とは無関係で、DST開始/終了情報は表示されないと考えていました。[tzdata](https://en.wikipedia .org/wiki/Tz_database)があります。 Raw tzdataは利用可能ですが(https://hackage.haskell.org/package/tzdata)、生のままです。 – 9000