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..
--
Posted via http://www.ruby-forum.com/.

Hi,

Matt Spendlove 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"

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.

DAY_DURATION = 24*60*60
date = Time.now - 14*DAY_DURATION

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

tiziano

···

--
Posted via http://www.ruby-forum.com/\.

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.

> 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.
>

DAY_DURATION = 24*60*60
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 Spendlove wrote:
(...)

>

DAY_DURATION = 24*60*60
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

···

--
Posted via http://www.ruby-forum.com/\.