0

如果我的本地data.csv副本超过 1 小时,我会以简单的形式从网站上的帐户重新下载文件:

# Mission: make sure data*.csv is most current whenever called
def updateData  
  return if File.exists?("data.csv") && (Time.now - File::Stat.new("data.csv").mtime) < 3600

  $agent = Mechanize.new
  $agent.pluggable_parser.default = Mechanize::Download  

  $page = $agent.get("http://website.com/login.jsp")
# login etc.
  $agent.get("/getdata!downLoad.action").save("data.csv")
end

但是他们提到我的数据更新每天只发布三次:16:45、18:45 和 22:45。

问题:只有当我的副本比上次更新时间(包括昨天的)更旧时,如何使我的代码更智能地获取更新?

一些数组["16:45", "18:45", "22:45"]可能会有所帮助,但我不确定 Ruby 的下一步是什么。

4

1 回答 1

1

这样的事情可以做到:

require 'time'

current = Time.now.strftime("%H%M")
past = File::Stat.new("data.csv").mtime.strftime("%H%M")
if (current > '2245' and past < '2245') or (current > '1845' and past < '1845') or (current > '1645' and past < '1645') or (File::Stat.new("data.csv").mtime.day != Time.now.day and current > '1645')
    #update
end

您还需要改变存储方式mtime。它需要采用hhmm. 创建 csv 时,您会这样设置mtimemtime = Time.now.hour.to_s + Time.now.min.to_s

于 2012-07-19T13:54:37.360 回答