【问题标题】:How to combine date and time?如何结合日期和时间?
【发布时间】:2013-10-20 15:05:34
【问题描述】:

我正在创建一个 Rails 3.2 应用程序,但我不确定如何处理日期和时间。 现在我在数据库中有一个名为 start_date 的字段,它是一个日期时间时间戳,我还有一个名为 start_time 的字段。

我正在使用 fullcalendar 插件,为此我必须将 start_date 和 start_time 结合起来。我怎样才能做到这一点? (并非数据库中的所有事件都有 start_time)。

感谢所有输入!

【问题讨论】:

    标签: ruby-on-rails-3 fullcalendar


    【解决方案1】:

    Ruby 有DateTime class,它本质上将日期和时间合并到一个对象中。我建议进行迁移,创建一个名为 start 的新字段,然后将现有的 start_datestart_time 字段合并为一个:

    def up
      add_column :events, :start, :datetime
    
      Event.find_each do |e|
        d = e.start_date
        t = e.start_time
        e.start = DateTime.new(d.year, d.month, d.day, t.hour, t.min, t.sec)
      end
    
      remove_column :events, :start_date
      remove_column :events, :start_time
    end
    
    def down
      add_column :events, :start_date, :datetime
      add_column :events, :start_time, :datetime
    
      Event.find_each do |e|
        s = e.start
        e.start_date = s.to_date
        e.start_time = s.to_time
      end
    
      remove_column :events, :start
    end
    

    如果以后需要获取日期或时间组件,可以使用to_dateto_time,合并后的DateTime应该可以很好地配合fullcalendar。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-10
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      • 2016-10-02
      • 2013-12-25
      相关资源
      最近更新 更多