我有个约会(这实际上是从一个PDF解析)的日期,它可以是任何格式如下:解析在轨
MM/DD/YYYY
MM/DD/YY
M/D/YY
October 15, 2007
Oct 15, 2007
是否有栏杆或红宝石可用任何宝石或功能解析我的约会? 或者我需要使用正则表达式来解析它?
顺便说一句我在轨道上使用红宝石3.2。
我有个约会(这实际上是从一个PDF解析)的日期,它可以是任何格式如下:解析在轨
MM/DD/YYYY
MM/DD/YY
M/D/YY
October 15, 2007
Oct 15, 2007
是否有栏杆或红宝石可用任何宝石或功能解析我的约会? 或者我需要使用正则表达式来解析它?
顺便说一句我在轨道上使用红宝石3.2。
您可以试试Date.parse(date_string)
。
您还可以使用Date#strptime
如果你需要一个特定的格式:
> Date.strptime("10/15/2013", "%m/%d/%Y")
=> Tue, 15 Oct 2013
对于一个通用的解决方案:
format_str = "%m/%d/" + (date_str =~ /\d{4}/ ? "%Y" : "%y")
date = Date.parse(date_str) rescue Date.strptime(date_str, format_str)
我发现慢性宝石非常易于使用的时间分析,它应该为你工作。我试过你给的例子。
似乎对于处理复杂的日期很有帮助,有没有我可以指定我的日期将采用MM/DD/YYYY格式而不是DD/MM/YYYY格式的选项? –
这应该是默认的,但你可以像这样设置endianness'endian_precedence::little',它将解析DD/MM/YYYY – beanie
我认为它不解析美国格式(MM/DD/YYYY)。 –
我不能使用strptime,因为我不知道我的日期格式:( –
你可以很容易地推断出它,如果不用'Date.parse'解析,然后split(“/”) .last将是2或4个字符,让你知道你是否应该使用%y或%Y –