我是elixir的新手,我正在尝试找到有关解析十进制到字符串时间的教程/文档。我还需要获得一周的数量,以便将其转换为YYYY-WW
这是我的要求机构:
%{"time" => 1_481_875_162}
检查它给了我:
IO.inspect data["time"]
#Decimal<1481875172>
答案 0 :(得分:2)
使用timex
,可以按照以下方式完成:
使用Decimal.to_integer/1
将十进制转换为整数
使用Timex.from_unix/1
将整数转换为DateTime
使用Timex.format!/2
由于您的小数位于data["time"]
,因此整个内容将是:
data["time"]
|> Decimal.to_integer
|> Timex.from_unix
|> Timex.format!("{YYYY}-{Wiso}")
请注意,我已经使用了ISO周号。 Timex还支持其他类型的周数,您可以阅读here。
答案 1 :(得分:2)
您还可以使用Elixir的内置DateTime
模块,使用from_unix!/2
方法将timestamps
转换为日期(但目前不提供获取周数的方法):
iex(1)> DateTime.from_unix!(1_481_875_162)
# => %DateTime{calendar: Calendar.ISO, day: 16, hour: 7, microsecond: {0, 0}, minute: 59, month: 12, second: 22, std_offset: 0, time_zone: "Etc/UTC", utc_offset: 0, year: 2016, zone_abbr: "UTC"}