Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > want only the working hours(9am-5pm) between two dates

Reply
Thread Tools

want only the working hours(9am-5pm) between two dates

 
 
Srikanth Jeeva
Guest
Posts: n/a
 
      12-10-2008
want only the working hours(9am-5pm) between two dates, weekends should
be omitted..

i did this code..

require 'time'
require 'date'
class Date
def calc(date1,date2)

d1=Time.parse(date1).strftime('%d').to_i
m1=Time.parse(date1).strftime('%m').to_i
y1=Time.parse(date1).strftime('%Y').to_i
t1=Time.parse(date1).strftime('%H').to_i
min1=Time.parse(date1).strftime('%M').to_i

date1 = Date.new( y1, m1, d1 )

d2=Time.parse(date2).strftime('%d').to_i
m2=Time.parse(date2).strftime('%m').to_i
y2=Time.parse(date2).strftime('%Y').to_i
t2=Time.parse(date2).strftime('%H').to_i

date2 = Date.new( y2, m2, d2 )
weekdays = (date1..date2).reject { |d| [0,6].include? d.wday }
w= weekdays.length
working_hours=w*8
puts "working hours = #{working_hours}"

end
end

d=Date.new
d.calc("November 5th, 2008, 10:30 am","November 7th, 2008, 6:00 pm")

i have calculated the total working hours..
but i need the total hours between 9am-5pm, between the given dates..
can any one plz help??
thanks.,

Regards,
Srikanth J
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Brian Candler
Guest
Posts: n/a
 
      12-10-2008
Srikanth Jeeva wrote:
> but i need the total hours between 9am-5pm, between the given dates..
> can any one plz help??


Not sure what you mean. Do you mean (date2 - date1 + 1) * 8 ?

Use to_i on the answer if you don't want Rational arithmetic.
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Srikanth Jeeva
Guest
Posts: n/a
 
      12-10-2008
Brian Candler wrote:
> Srikanth Jeeva wrote:
>> but i need the total hours between 9am-5pm, between the given dates..
>> can any one plz help??

>
> Not sure what you mean. Do you mean (date2 - date1 + 1) * 8 ?
>
> Use to_i on the answer if you don't want Rational arithmetic.


hi brain,

i mean..

date1="November 5th, 2008, 10:30 am"
date2="November 7th, 2008, 6:00 pm"

i want only the working hours between 10:30 am to 6.00 pm,in these
dates...

date can also be,

date1="March 5th, 2005, 5:30 am"
date2="November 7th, 2006, 9:00 pm"

all i need is working hours between these dates...

first day & last days time makes complications here.
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Pascal J. Bourguignon
Guest
Posts: n/a
 
      12-10-2008
Srikanth Jeeva <(E-Mail Removed)> writes:

> want only the working hours(9am-5pm) between two dates, weekends should
> be omitted..
>
> i did this code..
> but i need the total hours between 9am-5pm, between the given dates..
> can any one plz help??


There's 8 hours between 9am-5pm, so 8 hour/working day.
There's 5 working day/week.

So if you can compute the number of weeks between the Monday following
the first date, and the Monday preceding the last date, you can easily
compute the number of working hours.

if week-of(start) = week-of(end) then
working-hours = working-hours/working-day * working-days(from start to end)
else
working-hours = working-hours/working-day * ( working-days(from start to end-of-week-after(start))
+ working-days(from beginning-of-week-before(end) to end)
+ working-days/working-weeks * working-weeks(from end-of-week-after(start)
to beginning-of-week-before(end)))
end


--
__Pascal Bourguignon__
 
Reply With Quote
 
Pascal J. Bourguignon
Guest
Posts: n/a
 
      12-10-2008
Srikanth Jeeva <(E-Mail Removed)> writes:

> Brian Candler wrote:
>> Srikanth Jeeva wrote:
>>> but i need the total hours between 9am-5pm, between the given dates..
>>> can any one plz help??

>>
>> Not sure what you mean. Do you mean (date2 - date1 + 1) * 8 ?
>>
>> Use to_i on the answer if you don't want Rational arithmetic.

>
> hi brain,
>
> i mean..
>
> date1="November 5th, 2008, 10:30 am"
> date2="November 7th, 2008, 6:00 pm"
>
> i want only the working hours between 10:30 am to 6.00 pm,in these
> dates...
>
> date can also be,
>
> date1="March 5th, 2005, 5:30 am"
> date2="November 7th, 2006, 9:00 pm"
>
> all i need is working hours between these dates...
>
> first day & last days time makes complications here.


If you have partial days, apply the same principle than in my previous
answer, trim off the partial days, compute the trimmed off hours, and
multiply the days by the working-hours-per-day.

if day(start)=day(end) then
min(5pm,hour(end)) - max(9am,hour(start))
else
(min(5pm,hour(end)) - 9am)
+ (5pm - max(9am,hour(start)))
+ previous algo with (start + 1day) and (end - 1 day)
end

--
__Pascal Bourguignon__
 
Reply With Quote
 
dusty
Guest
Posts: n/a
 
      12-10-2008
On Dec 10, 8:32*am, Srikanth Jeeva <(E-Mail Removed)> wrote:
> Brian Candler wrote:
> > Srikanth Jeeva wrote:
> >> but i need the total hours between 9am-5pm, between the given dates..
> >> can any one plz help??

>
> > Not sure what you mean. Do you mean (date2 - date1 + 1) * 8 ?

>
> > Use to_i on the answer if you don't want Rational arithmetic.

>
> hi brain,
>
> i mean..
>
> date1="November 5th, 2008, 10:30 am"
> date2="November 7th, 2008, 6:00 pm"
>
> i want only the working hours between 10:30 am to 6.00 pm,in these
> dates...
>
> date can also be,
>
> date1="March 5th, 2005, 5:30 am"
> date2="November 7th, 2006, 9:00 pm"
>
> all i need is working hours between these dates...
>
> first day & last days time makes complications here.
> --
> Posted viahttp://www.ruby-forum.com/.


You could try this beauty of a gem.

http://runt.rubyforge.org/

http://runt.rubyforge.org/doc/files/...l_te_rdoc.html
 
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
RFC-822 dates into Ruby dates kellygreer1 Ruby 1 06-08-2008 10:59 PM
Need to use dates earlier than 1900 (Time library says out of range for dates < 1900) me@benjaminarai.com Ruby 1 07-17-2007 02:25 PM
Dates dates dates dates... SQL and ASP.NET David Lozzi ASP .Net 1 09-30-2005 02:18 PM
Dates! Dates! Dates! PW ASP General 4 08-09-2004 04:42 PM
working out time passed between two dates Steven Scaife ASP General 3 07-21-2004 02:15 PM



Advertisments