我有一个包含字符串格式日期的哈希为 -
{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月
答案 0 :(得分:6)
使用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等