Ruby 按包含字符串格式日期的键对哈希进行排序
我有一个包含字符串格式日期的哈希,如下所示-Ruby 按包含字符串格式日期的键对哈希进行排序,ruby,sorting,hash,Ruby,Sorting,Hash,我有一个包含字符串格式日期的哈希,如下所示- {Oct 2014: "some value", Aug 2012: "some value", July 2011: "new value"} 我想根据这些分类。我尝试调用sort_by或sort on key,但由于它们是以字符串格式存储的,所以它会按字母顺序对它们进行排序 hash_name.keys.sort 这给了我2012年8月、2011年7月、2014年10月的订单。当我尝试按年份和月份对它们进行排序时,如2011年7月、2012年
{Oct 2014: "some value", Aug 2012: "some value", July 2011: "new value"}
我想根据这些分类。我尝试调用sort_by或sort on key,但由于它们是以字符串格式存储的,所以它会按字母顺序对它们进行排序
hash_name.keys.sort
这给了我2012年8月、2011年7月、2014年10月的订单。当我尝试按年份和月份对它们进行排序时,如2011年7月、2012年8月、2014年10月使用方法将每个键转换为日期
对象:
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
-年份和世纪(可以是负数,至少4位)-0001、0000、1995、2009、14292等%Y
sort_by
convert array,只需执行Hash[Hash.sort_by{k,{k,{u| Date.strtime(k,“%b%Y”)}]
即可将结果作为哈希得到。