“模糊”日期,可选日/月

时间:2013-09-15 21:45:23

标签: ruby-on-rails forms time rails-activerecord

我想在Rails应用程序中存储一些数据的日期。用户可以选择一个日期,有时它会是特定的(如“2010年1月1日”),但有时他只知道月份和日期。年(“2010年1月”)或甚至仅年(2010年)。是否有一种标准方法来存储(并提供输入)在Rails中的方法?我知道我可以在模型中创建3个单独的列,但也许它有一个很好的宝石。

2 个答案:

答案 0 :(得分:2)

我创建了一个宝石来做到这一点:

http://rubygems.org/gems/date_time_precision

例如:

require 'date_time_precision/format/string'

Date.new(2010, 1).to_s(:long)
# => "January 2010"

答案 1 :(得分:0)

你听说过Chronic宝石吗?

这些是Github文档中的一些用法示例。

require 'chronic'

Time.now   #=> Sun Aug 27 23:18:25 PDT 2006

Chronic.parse('tomorrow')
  #=> Mon Aug 28 12:00:00 PDT 2006

Chronic.parse('monday', :context => :past)
  #=> Mon Aug 21 12:00:00 PDT 2006

Chronic.parse('this tuesday 5:00')
  #=> Tue Aug 29 17:00:00 PDT 2006

Chronic.parse('this tuesday 5:00', :ambiguous_time_range => :none)
  #=> Tue Aug 29 05:00:00 PDT 2006

Chronic.parse('may 27th', :now => Time.local(2000, 1, 1))
  #=> Sat May 27 12:00:00 PDT 2000

Chronic.parse('may 27th', :guess => false)
  #=> Sun May 27 00:00:00 PDT 2007..Mon May 28 00:00:00 PDT 2007

Chronic.parse('6/4/2012', :endian_precedence => :little)
  #=> Fri Apr 06 00:00:00 PDT 2012

Chronic.parse('INVALID DATE')
  #=> nil