我有個約會(這實際上是從一個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 –