4
有什麼辦法可以調整時區的Ecto.DateTime對象嗎?我想從數據庫中讀取Ecto.DateTime,然後針對用戶提名的時區進行調整?Ecto.DateTime和時區
此外,我想接受數據輸入並使用時區設置將其轉換回來。
我一直在尋找一個庫或一種技術來做到這一點,但沒有發現任何明顯的
有什麼辦法可以調整時區的Ecto.DateTime對象嗎?我想從數據庫中讀取Ecto.DateTime,然後針對用戶提名的時區進行調整?Ecto.DateTime和時區
此外,我想接受數據輸入並使用時區設置將其轉換回來。
我一直在尋找一個庫或一種技術來做到這一點,但沒有發現任何明顯的
外生不包括任何這樣的功能。有幾個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"