Ruby: 将字符串转换为日期

56

在Ruby中,将格式为"{ 2009, 4, 15 }"的字符串转换为日期,最好的方法是什么?


请参见https://dev59.com/BnA65IYBdhLWcg3w2iip。 - Factor Mystic
4个回答

129

你也可以使用 Date.strptime

Date.strptime("{ 2009, 4, 15 }", "{ %Y, %m, %d }")

如果月份无效...是否有一种方法返回nil而不是引发异常? - Ross
3
@Ross:将其包装在 beginrescue ArgumentError 中,在这种情况下返回 nil,这样做有什么问题吗? - robinst

6
另一种方法:
s = "{ 2009, 4, 15 }"
d = Date.parse( s.gsub(/, */, '-') )

2
def parse_date(date)
  Date.parse date.gsub(/[{}\s]/, "").gsub(",", ".")
end

date = parse_date("{ 2009, 4, 15 }")
date.day
#=> 15
date.month
#=> 4
date.year
#=> 2009

0

另一种方式:

Date.new(*"{ 2009, 04, 15 }".scan(/\d+/).map(&:to_i))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接