首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails中的数据比较

Rails中的数据比较
EN

Stack Overflow用户
提问于 2016-12-05 15:26:57
回答 3查看 3.8K关注 0票数 2

在我的Rails应用程序中,我得到了一些日期字符串,比如'2016-6''2016-10'和我想找到最新的一个,怎么做呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-05 15:33:18

使用Date.strptime解析特定日期格式

代码语言:javascript
复制
str = '2016-6'
Date.strptime(str, '%Y-%m')
=> Wed, 01 Jun 2016

然后,您可以简单地比较日期:

代码语言:javascript
复制
Date.strptime('2016-6', '%Y-%m') < Date.strptime('2016-10', '%Y-%m')
=> true

并查找一个字符串,该字符串表示最后一个日期:

代码语言:javascript
复制
['2016-6', '2016-10'].max_by { |str| Date.strptime(str, '%Y-%m')  }
=> "2016-10"
票数 5
EN

Stack Overflow用户

发布于 2016-12-05 15:34:27

假设您从a处获取日期,您可能希望使用类似的方法来格式化您的日期:

代码语言:javascript
复制
<%= f.date_select :startdate,{ discard_day: false, discard_month: true, discard_year: true }, { :class => 'form-control' } %>
票数 0
EN

Stack Overflow用户

发布于 2016-12-05 15:34:30

提供的日期格式不足以进行分析。

只要格式符合某些规则,Ruby就可以解析字符串日期。

在使用连字符-时,包含一天是强制性的。

这是因为通常连字符的日期格式包括日期。

幸运的是,如果您愿意或能够更改格式,您可以执行以下操作:

代码语言:javascript
复制
date = '2016/6'
DateTime.parse(date)
=> Wed, 01 Jun 2016 00:00:00 +0000

否则我只会把第一个附加到你的约会中。

代码语言:javascript
复制
date = '2016-6' + '-1'
DateTime.parse(date)
 => Wed, 01 Jun 2016 00:00:00 +0000

现在,您可以进行典型的比较:

代码语言:javascript
复制
date1 = ...
date2 = ...
case date1 <=> date2
when -1
  # date1 is before date2
when 1
  # date1 is after date2
when 0
  # date1 is equal to date2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40977637

复制
相关文章

相似问题

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