2016-08-17 8 views
4

Ecto.DateTimeオブジェクトをタイムゾーンに合わせる方法はありますか?私はデータベースからEcto.DateTimeを読んでみたいですが、ユーザが指定したタイムゾーンに合わせて調整しますか?Ecto.DateTimeとTime Zones

また、タイムゾーン設定を使用して、データ入力を受け入れて元に戻したいと思います。

私は、ライブラリまたはこれを行うための手法を探してきたが、エクトはどのような機能を含んでいない

答えて

5

明らかに何かを発見していません。これを行うことができるエリクサー用のライブラリがいくつかあります。私はtimexを使用しました。 Ectoを使用してTimex値をデータベースに保存するには、timex_ectoパッケージを使用できます。 Timex.DateTime値のタイムゾーンをAmerica/Los_Angelesに変更する方法は次のとおりです。

iex(1)> original = Timex.now 
#<DateTime(2016-08-17T06:24:03.015339Z Etc/UTC)> 
iex(2)> timezone = Timex.Timezone.get("America/Los_Angeles", original) 
#<TimezoneInfo(America/Los_Angeles - PDT (-07:00:00))> 
iex(3)> converted = Timex.Timezone.convert(original, timezone) 
#<DateTime(2016-08-16T23:24:03.015339-07:00 America/Los_Angeles)> 
iex(4)> Timex.format!(original, "{ISO:Extended}") 
"2016-08-17T06:24:03.015339+00:00" 
iex(5)> Timex.format!(converted, "{ISO:Extended}") 
"2016-08-16T23:24:03.015339-07:00"