设置datetime毫秒精度 - elixir

时间:2017-04-06 06:07:10

标签: datetime elixir timex

我试图获得一个日期时间,在亚秒部分只有3位数 使用timex我得到以下结果:

iex(12)>   {:ok, date} = Timex.format(Timex.shift(Timex.local, days: 16), "{ISO:Extended}")
{:ok, "2017-04-22T09:00:44.403879+03:00"}

我怎样才能得到这样的东西:
{:ok," 2017-04-22T09:00:44。 403 +03:00"}?

2 个答案:

答案 0 :(得分:5)

自Elixir 1.6.0以来,模块 时间 上存在 truncate / 2 功能, DateTime < / em> NativeDateTime

iex(1)> dt = Timex.now()
#DateTime<2018-02-16 19:03:51.430946Z>

iex(2)> dt2 = DateTime.truncate(dt, :millisecond)
#DateTime<2018-02-16 19:03:51.430Z>

答案 1 :(得分:4)

DateTime有一个microsecond字段,它是一个包含值和精度的元组。如果将精度更改为3,则在微秒输出中将获得3位数。我在Timex中找不到任何执行此操作的功能,但您可以手动修改该值:

iex(1)> dt = %{microsecond: {us, precision}} = Timex.now
#<DateTime(2017-04-06T08:26:24.041004Z Etc/UTC)>
iex(2)> precision
6
iex(3)> dt2 = %{dt | microsecond: {us, 3}}
#<DateTime(2017-04-06T08:26:24.041Z Etc/UTC)>
iex(4)> dt2 |> Timex.format!("{ISO:Extended}")
"2017-04-06T08:26:24.041+00:00"