Newbie question on how to subtract two dates

I have a file with a file name of the form filename.yymmdd, where yy=two digits year, mm=two digits month and dd=two digits day. For example, perf.030906 indicates 03=year 2003, 09=September and 06=the sixth day of the month (September 06, 2003).

This file contains performance data collected during the day and each system contains one file per day. We have few dozen systems collecting this data.

Every days, around 1:00 AM I have to take the file for the previous day and copy it to a central server where the new file will have the name: hostname.perf.yymmdd. The question I have is how do I subtract two dates. For example, if:

today=010104

yesterday=123103

Is there a ruby method that will allow me to perform something like: today - x and get yesterday?

Thank you

···

Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard

Check out the Date class.
http://www.ruby-doc.org/stdlib/libdoc/date/rdoc/files/date_rb.html

···

On Sat, 27 Dec 2003 06:18:33 +0900, Ruby Ruby wrote:

Is there a ruby method that will allow me to perform something like:
today - x and get yesterday?

Ruby Ruby wrote:

I have a file with a file name of the form filename.yymmdd, where yy=two digits year, mm=two digits month and dd=two digits day. For example, perf.030906 indicates 03=year 2003, 09=September and 06=the sixth day of the month (September 06, 2003).

This file contains performance data collected during the day and each system contains one file per day. We have few dozen systems collecting this data.

Every days, around 1:00 AM I have to take the file for the previous day and copy it to a central server where the new file will have the name: hostname.perf.yymmdd. The question I have is how do I subtract two dates. For example, if:

today=010104

yesterday=123103

Is there a ruby method that will allow me to perform something like: today - x and get yesterday?

Thank you


Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
You could use something like this:

require ‘date’
puts today=Date.today #=>2003-12-27
puts tomorrow=Date.new(2003,12,28) #=>2003-12-28
puts today-1 #=>2003-12-26
puts today+30 #=>2004-01-26

cheers
Adartse

Tim Hunter wrote:

Is there a ruby method that will allow me to perform something like:
today - x and get yesterday?

Check out the Date class.
http://www.ruby-doc.org/stdlib/libdoc/date/rdoc/files/date_rb.html

.

You just need to subtract (or add) the number of seconds you want from a
Date to get another date: in other words, to find the date 24 hours
prior to the current date:

yesterday = Time.now - 24 * 60 * 60

(Incidentally, I looked at the Date class documentation… I already
knew how to do Date arithmetic in Ruby and knew what I was looking for,
and it still took me a while to find where in the documentation it talks
about how to subtract some value x from a date to get another date.
Since this is a fairly common operation on dates, could this be given as
an example somewhere near the front of the docs? I know I would never
have found it there if I didn’t already know what it was I wanted to do,
and how to do it.)

···

On Sat, 27 Dec 2003 06:18:33 +0900, Ruby Ruby wrote:


Jamis Buck
jgb3@email.byu.edu

ruby -h | ruby -e ‘a=;readlines.join.scan(/-(.)[e|Kk(\S*)|le.l(…)e|#!(\S*)/) {|r| a << r.compact.first };puts “\n>#{a.join(%q/ /)}<\n\n”’

Thanks for the tip. I’ll update the docs soon.

Cheers,
Gavin

···

On Saturday, December 27, 2003, 9:16:38 AM, Jamis wrote:

yesterday = Time.now - 24 * 60 * 60

(Incidentally, I looked at the Date class documentation… I already
knew how to do Date arithmetic in Ruby and knew what I was looking for,
and it still took me a while to find where in the documentation it talks
about how to subtract some value x from a date to get another date.
Since this is a fairly common operation on dates, could this be given as
an example somewhere near the front of the docs? I know I would never
have found it there if I didn’t already know what it was I wanted to do,
and how to do it.)