我需要协助格式化日期字符串。我有一个JSON对象,其中包含元素" start_date"和" end_date"。这些元素包含字符串中的日期信息,如:
"2015-07-15"
我创建了这个方法来格式化我的start_date和end_date:
def format_date(date)
date.to_time.strftime('%b %d')
end
此方法的作用是将日期格式化为以下格式:
"Jul 15"
此方法可帮助我将start_date和end_date打印到表单中:
"Jul 15 to Jul 27"
我想要的是将我的日期格式化为:
"15 - 27 July 2015" #If the two dates fall within the same month
"15 July - 27 Aug 2015" #If the two dates fall into separate months
有人可以帮我写这种红宝石方法吗?
答案 0 :(得分:1)
你的意思是这样吗?
def format_date(date1, date2)
# convert the dates to time
date1 = date1.to_time
date2 = date2.to_time
# Ensure date1 is the lowest
if date1 > date2
date1, date2 = date2, date1
end
# handle identical dates
if date1 == date2
return date1.strftime('%d %b %Y')
end
# handle same year
if date1.year == date2.year
#handle same month
if date1.month == date2.month
return "#{date1.strftime('%d')} - #{date2.strftime('%d %b %Y')}"
# handle different month
else
return "#{date1.strftime('%d %b')} - #{date2.strftime('%d %b %Y')}"
end
end
# handle different date-month-year
return "#{date1.strftime('%d %b %Y')} - #{date2.strftime('%d %b %Y')}"
end
我从这开始,并将其重构为更具可读性和可用性的东西。
答案 1 :(得分:0)
我认为你可以使用formatted_times gem
https://rubygems.org/gems/formatted_times/versions/0.0.4
它可以帮助您根据您的要求格式化日期