将十进制转换为时间

时间:2017-03-24 11:26:03

标签: parsing time decimal elixir

我是elixir的新手,我正在尝试找到有关解析十进制到字符串时间的教程/文档。我还需要获得一周的数量,以便将其转换为YYYY-WW

这是我的要求机构:

%{"time" => 1_481_875_162}

检查它给了我:

IO.inspect data["time"]
#Decimal<1481875172>

2 个答案:

答案 0 :(得分:2)

使用timex,可以按照以下方式完成:

使用Decimal.to_integer/1将十进制转换为整数 使用Timex.from_unix/1将整数转换为DateTime 使用Timex.format!/2

将DateTime转换为您希望的格式的String

由于您的小数位于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"}