Modifying Time with DPrecision to work with Runt

P

Paul Wright

Hi there,

I'm currently trying out Runt for a project at work where we want to
work out the number of 'business' hours that have occurred between two
dates. Using Runt I've found this super easy to express the working
hours but I've noticed there's a bit of a performance hit to using
DateTime instead of Time. To start with I was using the following:

working_hours_expr = DIWeek.new(Mon) & REDay.new(9,30,17,30)) |
(REWeek.new(Tue, Fri) & REDay.new(9,00,17,30)
working_hours_expr.include?( DateTime.parse(event.created_at.to_s) )

If I tried to pass event.created_at straight into include?() it would
error with "undefined method `date_precision' for Tue Nov 07 11:12:34
GMT 2006:Time (NoMethodError)". I added the code below (which is
pretty much identical to the DateTime modification included with Runt)
and now it works (plus it's a lot faster), but I'm wondering if
there's any unintended consequences I should be looking out for? If
not, would it make sense to include this in the Runt gem?

class Time
include Runt::DPrecision

attr_accessor :date_precision

def date_precision
return @date_precision unless @date_precision.nil?
return Runt::DPrecision::DEFAULT
end
end

(Also, if anyone knows of a better way to work out how many business
hours have elapsed between two dates other than fast-forwarding
through the start and finish times whilst counting time within the
range I'm all ears.)

Cheers

Paul.
 

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,983
Messages
2,570,187
Members
46,747
Latest member
jojoBizaroo

Latest Threads

Top