我从数据库中定义了一些时间,这看起来是这样的:

ruby-1.9.2-p290 :017 > djel.smjena.pocetak1.to_time
 => 2000-01-01 08:00:00 +0100

没关系,它分配了我2000-1-1
还有,我在某个约会时间发生了一些事情
ruby-1.9.2-p290 :019 > dog.pocetak
 => Thu, 25 Aug 2011 08:18:00 UTC +00:00

所以我希望.to_time可以放弃我的约会,但是那不会
发生
ruby-1.9.2-p290 :020 > dog.pocetak.to_time
 => Thu, 25 Aug 2011 08:18:00 UTC +00:00

因此,现在比较在8:00之前是否发生了某些事情是没有用的。
那么,我该如何比较呢?有没有办法将dog.pocetak设置为
2000-01-01没有触摸时钟?

谢谢你

p.s.另外,我想到了创建新的时间变量,只能从旧的变量小时和分钟中获取,但是这种方法行不通吗?
ruby-1.9.2-p290 :059 > dog.pocetak.hour
 => 8


ruby-1.9.2-p290 :060 > dog.pocetak.minute
NoMethodError: undefined method `minute' for 2011-08-25 08:18:00 UTC:Time
        from /home/dorijan/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.10/lib/active_support/time_with_zone.rb:322:in `method_missing'
        from (irb):60
        from /home/dorijan/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands/console.rb:44:in `start'
        from /home/dorijan/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands/console.rb:8:in `start'
        from /home/dorijan/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands.rb:23:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'
ruby-1.9.2-p290 :061 > dog.pocetak.minutes
NoMethodError: undefined method `minutes' for 2011-08-25 08:18:00 UTC:Time
        from /home/dorijan/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.10/lib/active_support/time_with_zone.rb:322:in `method_missing'
        from (irb):61
        from /home/dorijan/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands/console.rb:44:in `start'
        from /home/dorijan/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands/console.rb:8:in `start'
        from /home/dorijan/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands.rb:23:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'

真令人沮丧:)

最佳答案

如果愿意,您可以使用ActiveSupportTime.change重置年,月和日:

> t = Time.now
=> Sun Aug 21 00:46:29 +0000 2011
> t.change(:month => 1, :day => 1, :year => 2000)
=> Sat Jan 01 00:46:29 +0000 2000

这样,您可以将彼此之间的“时间”进行比较(如果它们都重置为同一日期)。不确定这是否是一个好的解决方案,取决于您的实际需求。

编辑:

根据亩的建议,您还可以查看time数据类型。

关于ruby-on-rails - 比较 ruby 在 rails 上的时间或开挖日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7135411/

10-12 12:40
查看更多