Utime a dir and convert Date to Time

Hi list

I am learning some core Ruby (non Rails env) by playing with some File
i/o stuff and running under JRuby

  1. How do I utime a Dir? - Dir doesn’t seem to have the method and
    passing a dir to File.utime seems to just get ignored.

  2. My script needs to compare the mtime of a file with a constant
    offset. I ended up with this ugliness, turning both into Dates because
    I couldn’t figure out how to turn a TWO_WEEKS_AGO into a Time! :

====================================
TWO_WEEKS_AGO = Date.today - 14

if Date.parse(File.stat(path).mtime.to_s) > TWO_WEEKS_AGO
.
.
end

Any suggestions welcome.

Yours ignorantly…

Hi,

Matt S. wrote:

Hi list

I am learning some core Ruby (non Rails env) by playing with some File
i/o stuff and running under JRuby

  1. How do I utime a Dir? - Dir doesn’t seem to have the method and
    passing a dir to File.utime seems to just get ignored.

File.utime works with C ruby and jruby 1.1 (I haven’t try 1.0)
Note: in jruby if the path is absolute “\temp” try with “c:\temp”

  1. My script needs to compare the mtime of a file with a constant
    offset. I ended up with this ugliness, turning both into Dates because
    I couldn’t figure out how to turn a TWO_WEEKS_AGO into a Time! :

====================================
TWO_WEEKS_AGO = Date.today - 14

if Date.parse(File.stat(path).mtime.to_s) > TWO_WEEKS_AGO
.
.
end

Any suggestions welcome.

DAY_DURATION = 246060
date = Time.now - 14*DAY_DURATION

puts File.mtime(“c:/temp”)
File.utime(date,date, “c:/temp”)
puts File.mtime(“c:/temp”)

tiziano

File.utime works with C ruby and jruby 1.1 (I haven’t try 1.0)
Note: in jruby if the path is absolute “\temp” try with “c:\temp”

Yea, quite right. My simple mistake was to issue a FileUtils.mkdir
after the utime on a subdir.

end

Any suggestions welcome.

DAY_DURATION = 246060
date = Time.now - 14*DAY_DURATION

Right, I get this but there is no way to convert a Date to a Time? I
guess I was looking for timeInMillis or something. Perhaps just need
to loose the Java head :wink:

Thanks.

Matt S. wrote:
(…)

DAY_DURATION = 246060
date = Time.now - 14*DAY_DURATION

Right, I get this but there is no way to convert a Date to a Time? I
guess I was looking for timeInMillis or something. Perhaps just need
to loose the Java head :wink:

Thanks.

timeInMillis would be stored in a fixnum. Hmm, let’s try .to_f .

date_in_millis = Time.now.to_f - 14*DAY_DURATION
=>1199223885.312

To revert this:

puts Time.at(date_in_millis)
Tue Jan 01 22:52:52 +0100 2008

(I had to look this one up).

Regards,

Siep