[ruby]获取文件,解析文本并创建日期对象

时间:2017-09-25 18:40:17

标签: ruby parsing datetime

我有一个原始的.txt文件格式如下:

01.01.2017;New Year
16.04.2017;Easter
25.12.2017;Christmas

(旁注:日期格式为dd.mm.yyyy)

我正在尝试读取此文件,每行切片文本并从中挖出一个哈希,键是日期,其值是相应公共假日的名称。

我已经到目前为止了:

holidays = Hash[*File.read('holidays.txt').split(/;|\n/)]

这导致日期被设置为字符串,而不是日期对象。

关于如何将这些字符串转换为Date(或DateTime)对象的任何想法?

P.S。:我只使用Ruby,所以没有Rails助手......

1 个答案:

答案 0 :(得分:2)

像这样的东西

holidays = File.read('holidays.txt').split(/\n/).map do |row| 
  date, holiday_name = row.split(';') 
  date = Date.parse(date, '%d.%m.%Y')
  [date, holiday_name]
end.to_h
=> {
  #<Date: 2017-01-01 ((2457755j,0s,0n),+0s,2299161j)> => "New Year",
  #<Date: 2017-04-16 ((2457860j,0s,0n),+0s,2299161j)> => "Easter",
  #<Date: 2017-12-25 ((2458113j,0s,0n),+0s,2299161j)> => "Christmas"
}