如果 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的下一步是什么。
答案 0 :(得分: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时,您可以像mtime
这样设置mtime = Time.now.hour.to_s + Time.now.min.to_s
。