utime a dir and convert Date to Time

M

Matt Spendlove

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
 
T

Tiziano Merzi

Hi,

Matt said:
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
 
M

Matt Spendlove

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

Thanks.
 
S

Siep Korteling

Matt Spendlove wrote:
(...)
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 ;)

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top