ruby-on-rails - 给定月份和日期的最新日期
问题描述
使用 Ruby/Rails 获取具有给定月份和日期的日期的最后一次出现的最佳方法是什么。返回值应该是一个 Date 对象。
IE:
prev_occuring(月,日)
today = Date.today # => Thu, 14 Dec 2019
today.prev_occurring(:june, 1) # => Sat, 1 Jun 2019
or
today = Date.today # => Thu, 9 Jan 2020
today.prev_occurring(:june, 1) # => Sat, 1 Jun 2019
解决方案
当然,有不止一种方法可以做到这一点。
但这是一种方法:
$> Date.parse('28 dec').then { |date| date.advance(years: (date > Date.today ? -1 : 0)) }
=> Fri, 28 Dec 2018
$> Date.parse('3 feb').then { |date| date.advance(years: (date > Date.today ? -1 : 0)) }
=> Sun, 03 Feb 2019
或者,您可以选择更明确(即不依赖Date.parse
魔法)......
您可以使用Date::MONTHNAMES
来获取月份编号,然后编写一些条件来检查给定日期是否在日历年中的当前日期之后。
那么使用Date.new
年/月/日值而不是Date#advance
.
推荐阅读
- python - 流数据的最优数据结构
- javascript - Highstock,setExtreme(缩放)后获取显示点计数的真正方法 - 不计算所有具有 MIN 和 MAX 的数据
- xaml - 如何在资源字典中引用静态资源?
- asp.net - 如何在构建期间为 appsettings.json 文件中的键设置值
- firebase - VueJs Mocha 单元测试 RUNTIME EXCEPTION ReferenceError: IDBIndex is not defined
- python - 在python的mac终端中获取$USER的输出
- cakephp-3.x - SQLSTATE [42S02]:未找到基表或视图:1146 表 'proposal_db.userlogs' 不存在
- python - TableView 中的行数意外影响交替行颜色
- python-2.7 - Dropbox 脚本/下载完成后执行某些操作
- sql - SQL查询好友关系双方