首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按包含日期的字符串格式的键对散列进行排序

按包含日期的字符串格式的键对散列进行排序
EN

Stack Overflow用户
提问于 2014-03-16 16:07:59
回答 1查看 3K关注 0票数 2

我有一个包含字符串格式日期的散列,如-

代码语言:javascript
复制
{Oct 2014: "some value", Aug 2012: "some value", July 2011: "new value"}

我想根据这些分类。我尝试调用sort_by或对键进行排序,但是由于它们是以字符串格式存储的,所以按字母顺序对它们进行排序。

代码语言:javascript
复制
hash_name.keys.sort

这给了我按2012年8月,2011年7月,2014年10月的顺序。当我试着按年份和月份的顺序排序的时候--2011年7月,2012年8月,2014年10月

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-16 16:10:05

使用strptime方法将每个键转换为Date对象:

代码语言:javascript
复制
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等.
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22439267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档