从日期A到日期B的红宝石日期格式

时间:2016-11-22 16:19:49

标签: ruby-on-rails ruby activerecord

我只是想知道如何用Ruby编写日期?

date_a = Time.at() # <= new
date_b = Time.at() # <= old

我喜欢这样的东西: September 1 - 30, 2016

它也需要被认为是一年。  (例如,如果是在1月份,

应为December 25 2016 - January 25 2017

1 个答案:

答案 0 :(得分:4)

你可以做这样的事情

def format_dates(*dates)
  date1, date2 = dates.sort
  return "#{date1.strftime("%B %d %Y")} if date1 == date2

  if date1.year == date2.year
    if date1.month == date2.month
      "#{date1.strftime("%B")} #{date1.day} - #{date2.day}, #{date1.year}"
    else
      "#{date1.strftime("%B %d")} - #{date2.strftime("%B %d")}, #{date1.year}"
    end
  else
    "#{date1.strftime("%B %d %Y")} - #{date2.strftime("%B %d %Y")}"
  end
end

p format_dates(Date.parse('25/12/2016'), Date.parse('25/01/2017')) 
# => "December 25 2016 - January 25 2017"
p format_dates(Date.parse('25/12/2016'), Date.parse('25/01/2016')) 
# => "January 25 - December 25, 2016"