Jos*_*eim 3 ruby ruby-on-rails date
我确信已经有一个解决方案可以满足我的需求,但我想我不知道该搜索什么.任何指向正确的方向?
我在考虑像Rails这样的东西distance_of_time_in_words_to_now.
谢谢.
我相信你可以使用这样的助手.
def custom_format(date)
if date == Date.today
"Today"
elsif date == Date.yesterday
"Yesterday"
elsif (date > Date.today - 7) && (date < Date.yesterday)
date.strftime("%A")
else
date.strftime("%B %-d")
end
end
Run Code Online (Sandbox Code Playgroud)
没有测试代码,它只是指向你的问题的指针.
创建一个文件 .../config/initializers/time_format.rb 并将以下代码放入其中:
Time::DATE_FORMATS[:humanized_ago] = ->(time) do
st = Time.now.beginning_of_day
nd = Time.now.end_of_day
case
when time.between?(st + 1.day, nd + 1.day)
"Tomorrow #{time.strftime('%H:%M')}"
when time.between?(st, nd)
"Today #{time.strftime('%H:%M')}"
when time.between?(st - 1.day, nd - 1.day)
"Yesterday #{time.strftime('%H:%M')}"
when time.between?(st - 6.day, nd - 2.day)
time.strftime('%a %H:%M')
else
time.strftime('%y-%b-%d %H:%M')
end
end
Run Code Online (Sandbox Code Playgroud)
在 Rails Time 对象上,调用 function time.to_s(:humanized_ago)。如果你不喜欢符号“:humanized_ago”,就在time_format.rb的第一行中随意更改它。”如果你想要其他格式,你可以自己弄清楚。
出于某种原因,我以我的方式编写了比较。我找不到使用 Ruby 内置范围来测试时间的方法,并且您需要能够测试不包括终点的时间间隔。
| 归档时间: |
|
| 查看次数: |
2281 次 |
| 最近记录: |