首页 > 解决方案 > 如何将字符串日期转换为 DateTime 格式

问题描述

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

"20201228"

像这样

"2020-12-28T00:00:00"

标签: elixir

解决方案


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

由于您不关心时区,因此 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"

推荐阅读