如果我的本地副本是 ,我会以简单的形式从网站上的帐户重新下载文件。数据.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 的下一步是什么。
最佳答案
像这样的事情可以做到:
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
的形式.你会设置 mtime
像这样mtime = Time.now.hour.to_s + Time.now.min.to_s
创建 csv 时。
关于ruby - 基于时间戳有条件地重新下载网站数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11559026/