Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > newbie question on how to subtract two dates.

Reply
Thread Tools

newbie question on how to subtract two dates.

 
 
Ruby Ruby
Guest
Posts: n/a
 
      12-26-2003
--0-2040115834-1072473489=:21116
Content-Type: text/plain; charset=us-ascii


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
--0-2040115834-1072473489=:21116--


 
Reply With Quote
 
 
 
 
Tim Hunter
Guest
Posts: n/a
 
      12-26-2003
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?
>

Check out the Date class.
http://www.ruby-doc.org/stdlib/libdo...s/date_rb.html
 
Reply With Quote
 
 
 
 
Jamis Buck
Guest
Posts: n/a
 
      12-26-2003
Tim Hunter wrote:

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

>Check out the Date class.
>http://www.ruby-doc.org/stdlib/libdo...s/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.)

--
Jamis Buck
http://www.velocityreviews.com/forums/(E-Mail Removed)

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"'



 
Reply With Quote
 
Gavin Sinclair
Guest
Posts: n/a
 
      12-26-2003
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.)



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

Cheers,
Gavin



 
Reply With Quote
 
Osuka Adartse
Guest
Posts: n/a
 
      12-27-2003
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,2 #=>2003-12-28
puts today-1 #=>2003-12-26
puts today+30 #=>2004-01-26

cheers
Adartse


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
How to subtract dates ? Lutek Java 6 04-03-2009 11:03 AM
Class number (add subtract divide and multiply gavinstone007@gmail.com C++ 8 10-14-2006 05:43 PM
Multibyte add & subtract valinor@linuxmail.org C Programming 2 04-29-2006 12:05 PM
GregorianCalendar and how to subtract MONTH from a date. Manoj Nair Java 4 09-04-2003 05:49 AM



Advertisments