Clement Ow wrote:
> I have a script which I need to create a new Time or Date object to
> compare 2 dates for deletion. ie to delete files older than a stipulated
> date
> But i tend to get this error, undefined method 'parse' for
> DateTime:class or undefined method 'strptime'
> 
> Can anyone tell me what is wrong? A snippet of my code is as follows:
> 
>>      folders.each do |folder|
>>      Dir.glob(folder+"/*") do |file|
>>      match = regexp.match(File.basename(file))
>>      match1 = regexp1.match(File.basename(file))
>>      matchExp = excep_yyyymmdd.match(File.basename(file))
>>      matchExp1 = excep_ddmmyyyy.match(File.basename(file))
>>        if match
>>           file_date = DateTime.strptime(match[1])
> 
> 
>>          if matchExp != nil or matchExp1 != nil
>>             if $keepLastMthDay == true or $keepLastMth == true
>>               puts "File Escaped: #{file} (Keep last day of month option >activated)"
>>             elsif $keepLastMthDay == false and $keepLastMth == false
>>               if delete_date > file_date
>>                size = (File.size(file))/1024
>>                deleted_files << fileData.new(file,size)
>>                puts "Files/Folders deleted: #{file} size: #{size} KB"
>>               #FileUtils.rm_r file
>>               end #if
>>             end #if
>>          elsif matchExp == nil or matchExp1 == nil
>>             if delete_date > file_date
>>               size = (File.size(file))/1024
>>               deleted_files << fileData.new(file,size)
>>               puts "Files/Folders deleted: #{file} size: #{size} KB"
>>               #FileUtils.rm_r file
>>               end #if
>>           end # if matchExp

strptime() is essentially undocumented, so I can't help you there.  But 
here are some other ways to do what you want:


require 'parsedate.rb'
require 'date'

str = "5/6/08"
arr = ParseDate.parsedate(str, true) #true converts 08 to 2008
date1 = Date.new(*arr[0,3])

str2 = "2008-4-29"
arr2 = ParseDate.parsedate(str2)
date2 = Date.new(*arr2[0,3])

if date2 < date1
  puts "I want to delete this file"
else
  puts "I don't want to delete this file"
end


require 'scanf'

str3 = "2007.11.01"
year, day, month = str3.scanf("%4d.%2d.%2d")
date3 = Date.new(year, month, day)

if date3 < date1
  puts "I want to delete this file"
else
  puts "I don't want to delete this file"
end
-- 
Posted via http://www.ruby-forum.com/.