Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 如何将字符串日期转换为日期时间格式_Elixir - Fatal编程技术网

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

Elixir 如何将字符串日期转换为日期时间格式,elixir,Elixir,如何转换这样的字符串日期 “20201228” 像这样的事情 “2020-12-28T00:00:00”正如Sahil所指出的,如果您习惯了strftime格式,使用timex可能是一个简单的选项,例如 iex> Timex.parse!("20201228", "%Y%m%d", :strftime) ~N[2020-12-28 00:00:00] 但是,如果要避免安装另一个依赖项,可以使用模式匹配编写自己的字符串解析,例如: iex> &

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

“20201228”

像这样的事情


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

正如Sahil所指出的,如果您习惯了
strftime
格式,使用
timex
可能是一个简单的选项,例如

iex> Timex.parse!("20201228", "%Y%m%d", :strftime)
~N[2020-12-28 00:00:00]
但是,如果要避免安装另一个依赖项,可以使用模式匹配编写自己的字符串解析,例如:

iex> <<yyyy::binary-size(4), mm::binary-size(2), dd::binary-size(2)>> = "20201228"

iex> yyyy
"2020"
iex> mm
"12"
iex> dd
"28"
iex> Date.new(String.to_integer(yyyy), String.to_integer(mm), String.to_integer(dd))
{:ok, ~D[2020-12-28]}

正如Sahil所指出的,如果您习惯了strftime格式,那么使用
timex
可能是一个简单的选择,例如

iex> Timex.parse!("20201228", "%Y%m%d", :strftime)
~N[2020-12-28 00:00:00]
但是,如果要避免安装另一个依赖项,可以使用模式匹配编写自己的字符串解析,例如:

iex> <<yyyy::binary-size(4), mm::binary-size(2), dd::binary-size(2)>> = "20201228"

iex> yyyy
"2020"
iex> mm
"12"
iex> dd
"28"
iex> Date.new(String.to_integer(yyyy), String.to_integer(mm), String.to_integer(dd))
{:ok, ~D[2020-12-28]}
您在主题中要求使用“DateTime格式”,因此,即使您的示例是字符串,如果可能的话,最好使用本机日期类型,这就是我将在这里介绍的内容

因为您不关心时区,所以它很有用,因为它只表示一个抽象的日期和时间,没有时区

def to_naive_datetime()do
[yyyy,mm,dd]=例如,to_naive_datetime(“20201228”)
~N[2020-12-28 00:00:00]

如果确实只需要字符串,可以跳过整数解析:

def to_iso8601()do
“#{yyyy}-#{mm}-#{dd}T00:00:00”
结束
用法:

iex(2)>示例至iso8601(“20201228”)
“2020-12-28:00:00”
您在主题中要求使用“DateTime格式”,因此,即使您的示例是字符串,如果可能,最好使用本机日期类型,这就是我将在此处介绍的内容

因为您不关心时区,所以它很有用,因为它只表示一个抽象的日期和时间,没有时区

def to_naive_datetime()do
[yyyy,mm,dd]=例如,to_naive_datetime(“20201228”)
~N[2020-12-28 00:00:00]

如果确实只需要字符串,可以跳过整数解析:

def to_iso8601()do
“#{yyyy}-#{mm}-#{dd}T00:00:00”
结束
用法:

iex(2)>示例至iso8601(“20201228”)
“2020-12-28:00:00”

Use您也可以在那里传递字符串的格式。Use您也可以在那里传递字符串的格式。
使用Enum.join(“-”)>Date.from_iso8601!() #⇒~D[2020-12-28]
深奥的一个:
~r/\A.{4}|..(?=\z)|..\z/|>Regex.scan(“20201228”)|>Enum.join(“-”)|>Date.from_iso8601!()
太棒了。你能解释一下这个正则表达式吗?前四个符号或两个符号,然后是最后两个符号或最后两个符号。如果我们在玩正则表达式高尔夫,我也想玩<代码>~r/\A(\d{4})(\d{2})(\d{2})\z/|>Regex.replace(“20201228”,“\\1-\\2-\\3”)|>Date.from_iso8601
带Enum.join(“-”)|>Date.from_iso8601!() #⇒~D[2020-12-28]
深奥的一个:
~r/\A.{4}|..(?=\z)|..\z/|>Regex.scan(“20201228”)|>Enum.join(“-”)|>Date.from_iso8601!()
太棒了。你能解释一下这个正则表达式吗?前四个符号或两个符号,然后是最后两个符号或最后两个符号。如果我们在玩正则表达式高尔夫,我也想玩<代码>~r/\A(\d{4})(\d{2})(\d{2})\z/|>Regex.replace(“20201228”,“\\1-\\2-\\3”)|>Date.from_iso8601