2016-08-17 79 views
4

有什麼辦法可以調整時區的Ecto.DateTime對象嗎?我想從數據庫中讀取Ecto.DateTime,然後針對用戶提名的時區進行調整?Ecto.DateTime和時區

此外,我想接受數據輸入並使用時區設置將其轉換回來。

我一直在尋找一個庫或一種技術來做到這一點,但沒有發現任何明顯的

回答

5

外生不包括任何這樣的功能。有幾個Elixir庫可用,可以做到這一點。我只使用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"