我不確定這裏發生了什麼。我需要在兩個時間變量上運行字符串比較。一個變量是使用.mtime函數的Time對象。另一個變量來自sqlite3數據庫。我想比較這些時間,看看修改日期是否與sqlite3表中列出的最後修改日期不同。這是該部分的代碼。Ruby中的字符串比較不起作用
當我打印出來的價值觀,他們看起來一樣......那麼,爲什麼不比較工作
def scanfile
dir = Dir.new(Dir.pwd)
dir.each do |file|
fileName = File.basename(file)
modTime = File.mtime(file).strftime("%F %T")
lastMod = nil
exists = checkDB(fileName)
if exists == true
$db.execute("SELECT DateMod FROM Files WHERE fileName = '#{fileName}'") do |mod|
lastMod = mod
end
mod = modTime.to_s
printf("modTime: #{mod} lastMod: #{lastMod}\n")
if mod != lastMod
$db.execute("UPDATE Files SET NumMods=NumMods+1 WHERE fileName = '#{fileName}'")
$db.execute("UPDATE Files SET DateMod='#{modTime}' WHERE fileName = '#{fileName}'")
print "#{fileName} updated...\n"
end
else
if fileName != "." && fileName != ".."
inputRecord(fileName, modTime, modTime, 1)
print "#{fileName} inserted...\n"
end
end
end
end
有幾件事情你可以做自己節省了大量的工作。首先,使用ORM,如Sequel,Datamapper或ActiveRecord來抽象你的數據庫連接。其中的值是您的日期,日期時間和時間字段將被抽象,以便您可以對它們執行簡單的日期,日期時間或時間數學。另一個主要好處是轉換到不同的DBM將是容易的。 –