Page 1 of 1

Date / Time Manipulation

Posted: Wed May 12, 2010 5:34 am
by koolsamule
Hi Chaps,
I have some basic code that takes a UNIX time, adds a pre-calulated duration, to give a 'due date/time'.
I then convert the UNIX time to [Y-m-d H:i:s] format for presentation.
The problem I'm having at the moment is that the due date/time can be something like 2010-05-12 23:55:10. This time is outside of normal working hours, I need to insure the due date/time falls between 09:00 - 17:30 (Mon-Fri).
So if the start time is: 16:00 and the duration is: 5 hours, firstly I need the time to 'carry over' to the next day, starting from 09:00, and secondly, if the next day is a weekend, carry over to the next working day. . . . .
Can anyone point me in the right direction?
Cheers

Re: Date / Time Manipulation

Posted: Wed May 12, 2010 11:05 am
by AbraCadaver
This is very rough and can be improved, but as an example:

Code: Select all

$start = strtotime('2010-06-04 16:55:10');
$duration = 500;

if(date('Hi', $start) + $duration > 1730) {
	$first_hours = 1730 - date('Hi', $start);
	$next_hours = $duration - $first_hours;
	$next_time = date('H:i', strtotime(900 + $next_hours));
	$due_date = strtotime("next day $next_time", $start);
}
if(date('N', $due_date) > 5) {
	$due_date = strtotime("next monday $next_time", $start);
}
echo date('Y-m-d H:i:s', $due_date);

Re: Date / Time Manipulation

Posted: Thu May 13, 2010 5:59 am
by koolsamule
sweet, cheers dude, managed to play around with the code to get something that does the trick very nice!