必要なものに対する解決策は既にあると確信していますが、何を検索すればよいかわかりません。正しい方向への指示はありますか?
Rails のようなものを考えていdistance_of_time_in_words_to_now
ます。
ありがとうございました。
必要なものに対する解決策は既にあると確信していますが、何を検索すればよいかわかりません。正しい方向への指示はありますか?
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
コードをテストしませんでした。これは問題への単なるポインタです。
ファイル .../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
Rails Time オブジェクトで、 function を呼び出しますtime.to_s(:humanized_ago)
。「:humanized_ago」という記号が気に入らない場合は、time_format.rb の最初の行で好きなように変更してください。他のフォーマットが必要な場合は、それを理解することができます。
理由があって、私が行った方法で比較を書きました。Ruby の組み込み範囲を使用して時間をテストする方法が見つかりませんでした。終了点を除いて時間間隔をテストできるようにする必要があります。
これを試して
<%= time_ago_in_words(time) %> ago