elixir - 如何将字符串日期转换为日期时间格式

标签 elixir

如何转换这样的字符串日期

“20201228”

像这样的事情

“2020-12-28T00:00:00”

最佳答案

您在主题中要求使用“日期时间格式”,因此即使您的示例是字符串,如果可能的话最好使用 native 日期类型,这就是我将在此处包含的内容。

由于您不关心时区,NaiveDateTime很有用,因为它仅表示没有时区的抽象日期和时间。

def to_naive_datetime(<<yyyy::binary-4, mm::binary-2, dd::binary-2>>) do
  [yyyy, mm, dd] = for i <- [yyyy, mm, dd], do: String.to_integer(i)
  NaiveDateTime.new!(yyyy, mm, dd, 0, 0, 0)
end

用法:

iex(1)> Example.to_naive_datetime("20201228")
~N[2020-12-28 00:00:00]

如果你真的只想要一个字符串,你可以跳过整数解析:

def to_iso8601(<<yyyy::binary-4, mm::binary-2, dd::binary-2>>) do
  "#{yyyy}-#{mm}-#{dd}T00:00:00"
end

用法:

iex(2)> Example.to_iso8601("20201228")
"2020-12-28T00:00:00"

关于elixir - 如何将字符串日期转换为日期时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66607557/

相关文章:

elixir - 无法启动 Phoenix 发布

elixir - 惯用的 Elixir 按特定的非空键值过滤 map 列表?

elixir - 在 Ecto 迁移中使用 Repo

elixir - 在 Elixir 中,为什么不使用 case 语句而不是多个函数重载?

elixir - 在 phoenix LiveView 中使用外部库

postgresql - Elixir 的 Ecto 中 varchar(custom_size) 的 PostgreSQL 数组

performance - 如何让并发函数 (pmap) 使用 Elixir 中的所有内核?

elixir - 如何通过 Ecto Multi 从先前插入的表键中检索 id

elixir - 为什么我们不能在 Elixir 保护子句或宏中使用其他函数?

elixir - 是否可以在 elixir 中的流上运行 reduce?