【发布时间】:2020-09-06 17:33:02
【问题描述】:
我从文件中创建了一个散列,其中包含不同格式的字符串日期(如1988 年9 月,另一行是1960 年7 月11 日,有时年份)
require 'date'
def create_book_hash(book_array)
{
link: book_array[0],
title: book_array[1],
author: book_array[2],
pages: book_array[3].to_i,
date: book_array[4],
rating: book_array[5].to_f,
genre: book_array[6]
}
end
def books_sorted_by_date (books_array)
books_array.sort_by { |key| Date.strptime(key[:date], '%Y, %m') }
end
book_file= File.read("books.txt")
.split("\n")
.map { |line| line.split("|")}
.map { |book_array| create_book_hash(book_array)}
puts books_sorted_by_date(book_file)
我正在尝试按日期对书籍进行排序,因此它将按年份升序排列,并且由于我有不同的字符串类型,我将哈希键作为strptime 中的第一个参数来访问以下中的所有值:日期 。这给了我 \strptime': invalid date (Date::Error).` 我不明白为什么以及如何将这些字符串转换为日期对象? (只有红宝石,没有轨道)
【问题讨论】:
-
我们可以看看你的数据集吗?您的“books.txt”文件
标签: ruby