我有以下日期字符串「1月31日星期一」。將文本字符串轉換爲任何有效的Ruby格式化時間
有什麼辦法將其轉換爲有效的Ruby格式化時間,以便我可以將其轉換爲其他內容?
我怎麼能分析它的情況下,這是在不同的語言,比如西班牙語「Lunes 31 Enero」?
我有以下日期字符串「1月31日星期一」。將文本字符串轉換爲任何有效的Ruby格式化時間
有什麼辦法將其轉換爲有效的Ruby格式化時間,以便我可以將其轉換爲其他內容?
我怎麼能分析它的情況下,這是在不同的語言,比如西班牙語「Lunes 31 Enero」?
我怎麼能分析它的情況下,這是在不同的語言,即西班牙語 「Lunes 31 Enero」?
通常我會說與Chronic gem去作爲你最好的選擇靈活的日期時間解析。用不同的語言進行折騰使其成爲一個不同的問題,因爲圖書館面向英語。
那意味着回落到Date.parse
。放入IRB我有一個驚喜:
ruby-1.9.2-p136 :001 > require 'date'
=> true
ruby-1.9.2-p136 :002 > puts Date.parse('Lunes 31 Enero')
2011-01-31
因此,Date.parse已經是西班牙語。
如果不是,就有可能重寫日期的月和日常數,給它一個伸出援助之手:
require 'date'
Date::MONTHNAMES = [nil] + %w(Enero Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre Octubre Noviembre Diciembre)
Date::DAYNAMES = %w(Lunes Martes Miércoles Jueves Viernes Sábado Domingo)
Date::ABBR_MONTHNAMES = [nil] + %w(Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic)
Date::ABBR_DAYNAMES = %w(Lun Mar Mié Jue Vie Sáb Dom)
我沒有測試過,因爲它已經工作沒有用的東西搞亂,但對於其他不受支持的語言,改變這些值並查看會發生什麼可能是一個有價值的實驗。
看起來好像Date.parse(string)
會爲你工作。當給出您的示例字符串時,它會返回Mon, 31 Jan 2011
作爲Date對象。
Date.parse
作品就好了:
$ irb
>> d = Date.parse('Monday 31 January')
=> #<Date: 4911185/2,0,2299161>
>> d.year
=> 2011
>> d.month
=> 1
>> d.day
=> 31
string = "Monday 31 January"
date = Date.parse(string)
在irb中工作正常,未加載導軌。 – 2011-01-31 00:36:01
在ruby 1.9.2p136上,'Date#parse`不存在,並且引發了一個錯誤。 – 2011-01-31 00:53:39
「關於ruby 1.9.2p136,日期#解析不存在」。它的確如此,你只需要'需要'日期'。 「這只是Rails」。不,你必須要求圖書館。 – 2011-01-31 01:09:35