我有一个包含日期字符串格式的哈希 -
{Oct 2014: "some value", Aug 2012: "some value", July 2011: "new value"}
Run Code Online (Sandbox Code Playgroud)
我想根据它们对它们进行排序.我尝试调用sort_by或对键进行排序,但由于它们以字符串格式存储,因此按字母顺序对它们进行排序.
hash_name.keys.sort
Run Code Online (Sandbox Code Playgroud)
这给了我2012年8月,2011年7月,2014年10月的顺序.虽然我想按照年份和月份的顺序对它们进行排序,如2011年7月,2012年8月,2014年10月
使用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"]]
Run Code Online (Sandbox Code Playgroud)
注意 :
%b- 缩写的月份名称('Jan')
%Y- 世纪年份(可以是负数,至少4位数) - 0001,0000,1995,2009,14292等.