用凤凰语格式化时间

时间:2016-06-28 21:58:14

标签: elixir phoenix-framework ecto

我正在尝试将模板中的时间格式化为" 12秒前"或者" 14分钟前"。 Ecto当前吐出的时间看起来像2016-06-28 21:35:21

目前,我只是将这样的时间渲染出来:<p><%= post.inserted_at %></p>

我知道ruby / rails有一个名为time_ago_in_words()的函数可以完成我正在寻找的功能。也许这可以用新的Elixir 1.3日历类型来完成?

2 个答案:

答案 0 :(得分:3)

您可以使用Timex十六进制包。特别是from_now功能。您需要确保日期类型为DateTime。然后只需使用

Timex.from_now(my_date)
#"2 hours ago"

要将Ecto.DateTime转换为Timex.DateTime,我使用了此

my_ecto_dateTime
#Ecto.DateTime<2016-05-16T16:26:55Z>
{:ok, date} =  Ecto.DateTime.dump(my_ecto_dateTime)
my_date = Timex.DateTime.from date

答案 1 :(得分:0)

Here is a port from Rails

time_ago_in_words(~N[2015-03-05 21:45:00])
"about 6 years"

distance_of_time_in_words(~N[2004-06-06 21:45:00], ~N[2004-06-06 21:45:00], include_seconds: true)
"less than 5 seconds"

distance_of_time_in_words(~N[2004-06-06 21:45:00], ~N[2004-06-06 21:45:00])                       
"less than a minute"