我想写出漂亮的日期时间间隔。
如果只是写类似
"from #{date_start.strftime('%d.%m.%Y %H:%M')}
till #{date_end.strftime('%d.%m.%Y %H:%M')}"`
但在某些情况下,这看起来很糟糕。例如:
从 14.08.2012 00:00 到 16.08.2012 00:00
我能做些什么来使其人性化?
我想写出漂亮的日期时间间隔。
如果只是写类似
"from #{date_start.strftime('%d.%m.%Y %H:%M')}
till #{date_end.strftime('%d.%m.%Y %H:%M')}"`
但在某些情况下,这看起来很糟糕。例如:
从 14.08.2012 00:00 到 16.08.2012 00:00
我能做些什么来使其人性化?
为了更漂亮地展示它,我在 application_helper.rb 中写了 helper:
def humanize_date_range date_start, date_end
date_to_show = [:Y, :m, :d]
time_to_show = [:H, :M]
date_to_show.delete(:Y) if date_start.year == date_end.year
date_to_show.delete(:m) if date_start.month == date_end.month
date_to_show.delete(:d) if date_start.day == date_end.day
time_to_show.delete(:H) if date_start.hour == date_end.hour
time_to_show.delete(:M) if date_start.min == date_end.min
if time_to_show.empty? and date_to_show.empty?
return "#{date_start.strftime('%d.%m.%Y')} in #{date_start.strftime('%H:%M')}"
elsif time_to_show.size == 2 and date_to_show.empty?
return "From #{date_start.strftime('%H:%M')} till #{date_end.strftime('%H:%M')} #{date_end.strftime('%d.%m.%Y')}"
elsif date_to_show.size == 1 and time_to_show.empty? and date_to_show.index(:d)
return "From #{date_start.strftime('%d')} till #{date_end.strftime('%d')} #{date_start.strftime('%b %Y')}"
elsif time_to_show.empty?
return "From #{date_start.strftime('%d.%m.%Y')} till #{date_end.strftime('%d.%m.%Y')}"
else
return "C #{date_start.strftime('%d.%m.%Y %H:%M')} по #{date_end.strftime('%d.%m.%Y %H:%M')}"
end
end
现在它看起来更漂亮了:
2012 年 8 月 14 日至 16 日