我有一个包含字符串格式日期的散列,如-
{Oct 2014: "some value", Aug 2012: "some value", July 2011: "new value"}我想根据这些分类。我尝试调用sort_by或对键进行排序,但是由于它们是以字符串格式存储的,所以按字母顺序对它们进行排序。
hash_name.keys.sort这给了我按2012年8月,2011年7月,2014年10月的顺序。当我试着按年份和月份的顺序排序的时候--2011年7月,2012年8月,2014年10月
发布于 2014-03-16 16:10:05
使用strptime方法将每个键转换为Date对象:
require 'date'
hash = {
'Oct 2014' => "some value",
'Aug 2012' => "some value",
'July 2011' => "new value"
}
hash.sort_by { |k,_| Date.strptime(k,"%b %Y") }
# => [["July 2011", "new value"],
# ["Aug 2012", "some value"],
# ["Oct 2014", "some value"]]注意:
%b -缩写的月份名称('Jan')%Y年与世纪(可以是负的,至少4位数)- 0001,0000,1995年,2009年,14292等.https://stackoverflow.com/questions/22439267
复制相似问题