繁体   English   中英

Ruby中带字符串的日期时间算术

[英]Datetime arithmetic with a string in Ruby

在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天”)的字符串,依此类推。 有什么建议么?

尝试使用“ 慢性”将日期字符串解析为实际的datetime对象。

我将其与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

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

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

我同意约翰·米利金John Millikin)的观点 假设您尚未陷入Rails中,那么与整个ActiveSupport相比, Chronic甚至您自己的帮助者携带的负载将更加轻巧有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM