我有这个代码将日期字符串数组从2011年11月17日格式转换为11/17/11:
def date_convert dates
months = { 'Jan' => 1, 'Feb' => 2, 'Mar' => 3, 'Apr' => 4,
'May' => 5, 'Jun' => 6, 'Jul' => 7, 'Aug' => 8,
'Sep' => 9, 'Oct' => 10, 'Nov' => 11, 'Dec' => 12 }
new_dates = []
dates.each do |date|
date_split = date.split('-')
month = months[date_split[1]]
day = date_split[0]
year = date_split[2][-2, 2]
new_dates.push ("#{month}/#{day}/#{year}")
end
new_dates
end
有没有更好的,可能内置的方式来使用Ruby进行这种转换?我正在学习Ruby,所以任何其他方法都会非常感激。
答案 0 :(得分:20)
使用内置的Time.parse
和Time#strftime
功能。
require 'time'
time = Time.parse("17-Nov-2011")
time.strftime("%m/%d/%y")
# => "11/17/11"
答案 1 :(得分:10)
使用Date#strftime
,您可以设置日期格式。 Date.strptime
允许您进行“反向”操作:从字符串构建日期。
当你将两者结合起来时,你会得到你的结果:
puts Date.strptime('17-Nov-2011', '%d-%b-%Y').strftime('%m/%d/%y')
每个%
- 参数是日期字符串的一部分。
你需要:
用于解析日期字符串:
用于创建字符串:
答案 2 :(得分:4)
Ruby拥有非常强大的日期和时间函数集,请查看Date类。
Date.parse("17-Nov-2011").strftime('%m/%d/%y')