【问题标题】:Datetime arithmetic with a string in RubyRuby中带有字符串的日期时间算术
【发布时间】:2010-09-07 14:55:51
【问题描述】:

在 Ruby 中,我正在尝试执行以下操作。

def self.stats(since)
  return Events.find(:all, :select => 'count(*) as this_count', :conditions => ['Date(event_date) >= ?', (Time.now - since)]).first.this_count
end

其中“since”是一个表示时间量的字符串(“1 小时”、“1 天”、“3 天”)等等。有什么建议吗?

【问题讨论】:

    标签: ruby datetime time


    【解决方案1】:

    尝试使用Chronic 将日期字符串解析为实际的日期时间对象。

    【讨论】:

      【解决方案2】:

      我和 ActiveSupport gem 一起破解了这个:

      require 'active_support'
      
      def string_to_date(date_string)
        parts = date_string.split
        return parts[0].to_i.send(parts[1])
      end
      sinces = ['1 hour', '1 day', '3 days']
      
      sinces.each do |since|
        puts "#{since} ago: #{string_to_date(since).ago(Time.now)}"
      end
      

      [edit] 要回答您的问题,您可以这样尝试:

      :conditions => ['Date)event_date) >= ?', (string_to_date(since).ago(Time.now))]
      

      【讨论】:

        【解决方案3】:

        我同意John MillikinChronic,甚至是你自己的助手,如果你还没有被困在 Rails 中,那将是一个比整个 ActiveSupport 更轻、更有效的依赖项。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多