Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Time Diff Module

Reply
Thread Tools

Time Diff Module

 
 
David Clements
Guest
Posts: n/a
 
      01-17-2006
------=_Part_50992_21857766.1137516497737
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Anyone know of a module out there that will encapsulate differences in time=
?

Ideally I would want something like this:

d1 =3D DateTime.now + 2.hours + 2.minutes
d2 =3D DateTime.now

diff =3D d1-d2


puts "Diff: #{diff.hours}:#{diff.minutes}"


>> Diff: 2:02


I have searched for examples and all of them seem to be doing this manually=
 
Reply With Quote
 
 
 
 
Wilson Bilkovich
Guest
Posts: n/a
 
      01-17-2006
On 1/17/06, David Clements <(E-Mail Removed)> wrote:
> Anyone know of a module out there that will encapsulate differences in ti=

me?
>
> Ideally I would want something like this:
>
> d1 =3D DateTime.now + 2.hours + 2.minutes
> d2 =3D DateTime.now
>
> diff =3D d1-d2
>
>
> puts "Diff: #{diff.hours}:#{diff.minutes}"
>
>
> >> Diff: 2:02

>
> I have searched for examples and all of them seem to be doing this manual=

ly.
>
> Dave


Runt may have what you're looking for:
http://runt.rubyforge.org/

Tutorial:
http://runt.rubyforge.org/doc/files/...l_te_rdoc.html


 
Reply With Quote
 
 
 
 
Jonathan Leighton
Guest
Posts: n/a
 
      01-17-2006
On Wed, 2006-01-18 at 01:48 +0900, David Clements wrote:
> Anyone know of a module out there that will encapsulate differences in time?
>
> Ideally I would want something like this:
>
> d1 = DateTime.now + 2.hours + 2.minutes
> d2 = DateTime.now
>
> diff = d1-d2
>
>
> puts "Diff: #{diff.hours}:#{diff.minutes}"
>
>
> >> Diff: 2:02

>
> I have searched for examples and all of them seem to be doing this manually.
>
> Dave


Ruby on Rails' ActiveSupport::CoreExtensions::Numeric::Time module
supports this. The gem is activesupport. You might want to extract it
somehow to avoid getting the rest of the library if you don't need it.

Jon

--
Jonathan Leighton
http://turnipspatch.com/ | http://jonathanleighton.com/ | http://digital-proof.org/



 
Reply With Quote
 
ara.t.howard@noaa.gov
Guest
Posts: n/a
 
      01-17-2006
On Wed, 18 Jan 2006, David Clements wrote:

> Anyone know of a module out there that will encapsulate differences in time?
>
> Ideally I would want something like this:
>
> d1 = DateTime.now + 2.hours + 2.minutes
> d2 = DateTime.now
>
> diff = d1-d2
>
>
> puts "Diff: #{diff.hours}:#{diff.minutes}"
>
>
>>> Diff: 2:02

>
> I have searched for examples and all of them seem to be doing this manually.


i'm guessing the reason this has not been done generically is that it is
incredibly slippery. for instance, if i had

a = DateTime::new 1582, 8, 4
b = a + 1.day

then b should the the day '1582-08-15'. and

diff = b - a
p diff.days

should output either 10 or 1 - depending on how you look at it.

the reason is the fact that DateTime makes all the calender reforms between
julian and gregorian transparent and even handles them based on timezone. not
saying it could not be done, but it's tough and, afaik, hasn't been. see
ruby-1.8.4/lib/date.rb for details.

of course, activesupport give you Numeric#days, etc, but that is quite easy to
roll.

if the code you posted is pretty close you what you actually need then why not
simply use Time objects, converting to DateTime as needed using
DateTime::new(t.year, t.month, t.day... etc)?

harp:~ > cat a.rb
class Time
module Units
def __less__() "/" end
def __more__() "*" end
def milliseconds() self.send(__less__,1000) end; alias_method "millisecond", "milliseconds"
def seconds() self end; alias_method "second", "seconds"
def minutes() seconds.send(__more__,60) end; alias_method "minute", "minutes"
def hours() minutes.send(__more__,60) end; alias_method "hour", "hours"
def days() hours.send(__more__,24) end; alias_method "day", "days"
def weeks() days.send(__more__,7) end; alias_method "week", "weeks"
def months() weeks.send(__more__,4) end; alias_method "month", "months"
def years() months.send(__more__,12) end; alias_method "year", "years"
def decades() years.send(__more__,10) end; alias_method "decade", "decades"
def centuries() decades.send(__more__,10) end; alias_method "century", "centuries"
end
module DiffUnits
include ::Time::Units
def __less__() "*" end
def __more__() "/" end
end
alias_method "__delta__", "-"
def - other
ret = __delta__ other
ret.extend DiffUnits
ret
end
end
class Numeric
include ::Time::Units
end

now = Time::now
a = now
b = now + 2.hours + 2.minutes
d = b - a

require "yaml"
%w( seconds minutes hours days ).each{|m| y m => d.send(m)}


harp:~ > ruby a.rb
---
seconds: 7320.0
---
minutes: 122.0
---
hours: 2.03333333333333
---
days: 0.0847222222222222


hmmm. maybe i'll add this to alib...

cheers.

-a
--
strong and healthy, who thinks of sickness until it strikes like lightning?
preoccupied with the world, who thinks of death, until it arrives like
thunder? -- milarepa



 
Reply With Quote
 
ABHILASH M.A
Guest
Posts: n/a
 
      03-09-2011
David Clements wrote in post #23880:
> Anyone know of a module out there that will encapsulate differences in
> time?
>
> Ideally I would want something like this:
>
> d1 = DateTime.now + 2.hours + 2.minutes
> d2 = DateTime.now
>
> diff = d1-d2
>
>
> puts "Diff: #{diff.hours}:#{diff.minutes}"
>
>
>>> Diff: 2:02

>
> I have searched for examples and all of them seem to be doing this
> manually.
>
> Dave


There is a gem available to find the difference in a useful way.

https://rubygems.org/gems/time_diff

This will return a hash of difference in year, month, week, day, hour,
minute, second

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

 
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
Is time.time() < time.time() always true? flamesrock Python 8 11-24-2006 06:51 AM
Diff CSS styles for diff INPUT TYPE='s? A Traveler ASP .Net 6 08-31-2004 09:17 PM
[ANN] Diff::LCS 1.1.0, Diff::LCS 1.0.4 Austin Ziegler Ruby 3 08-09-2004 06:34 AM
diff Process under diff users Cyril Vi?ville Perl 1 06-29-2004 06:22 PM
Same sessionID retuned to diff browsers in diff machines Berrucho ASP .Net 2 12-05-2003 02:23 PM



Advertisments