datetime - Ecto.DateTime 和时区

标签 datetime elixir ecto

有什么方法可以调整时区的 Ecto.DateTime 对象吗?我想从数据库中读取一个 Ecto.DateTime,然后针对用户指定的时区调整它?

另外,我想接受数据输入并将其转换回来,使用时区设置。

我一直在寻找一个图书馆或一种技术来做到这一点,但没有发现任何明显的东西

最佳答案

Ecto 不包含任何此类功能。有几个可用的 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"

关于datetime - Ecto.DateTime 和时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38989155/

相关文章:

java - 解析 "1/1/00"为 java 中的 "mm/dd/yy"格式给出 1/1/0001。如何解决?

python - 在Python中解析时间戳

elixir - Circumflex sign/Pin/Cap 运算符 (^) 在 Elixir 中有什么作用?

pattern-matching - 模式匹配 : advantage over switch-case?

join - Elixir : multiple joins and reusable/composable queries

elixir - 使用 Postgrex 和 Ecto 准备好的语句

mysql - 使用 Ecto (MySQL) 进行 upsert 的最简单方法是什么

PHP MySQL 查询在结果中显示错误的日期时间

erlang - 连接关闭 - 奇怪的错误,无法从 erlang VM 连接到某些主机

python - 将日期时间格式化为以毫秒为单位的字符串