@ 2015-10-26T09:30:16Z <?php
// Initial datetimes
$date1 = new DateTime('2012-03-22 11:29:16');
$date2 = new DateTime('2012-03-24 03:58:58');
// Set first datetime to midnight of next day
$start = clone $date1;
$start->modify('+1 day');
$start->modify('midnight');
// Set second datetime to midnight of that day
$end = clone $date2;
$end->modify('midnight');
// Count the number of full days between both dates
$days = 0;
// Loop through each day between two dates
$interval = new DateInterval('P1D');
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $dt) {
// If it is a weekend don't count it
if (!in_array($dt->format('l'), array('Saturday', 'Sunday'))) {
$days++;
}
}
print "<pre>";
print_r($period);
print "</pre>";
// Assume 8 hour workdays
$hours = $days * 8;
// Get the number of hours worked on the first day
$date1->modify('5:30 PM');
$diff = $date1->diff($start);
$hours += $diff->h;
// Get the number of hours worked the second day
$date1->modify('8 AM');
$diff = $date2->diff($end);
$hours += $diff->h;
echo $hours;
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 8.2.0 - 8.2.18 , 8.3.0 - 8.3.4 , 8.3.6 <pre>DatePeriod Object
(
[start] => DateTime Object
(
[date] => 2012-03-23 00:00:00.000000
[timezone_type] => 3
[timezone] => Europe/Amsterdam
)
[current] => DateTime Object
(
[date] => 2012-03-24 00:00:00.000000
[timezone_type] => 3
[timezone] => Europe/Amsterdam
)
[end] => DateTime Object
(
[date] => 2012-03-24 00:00:00.000000
[timezone_type] => 3
[timezone] => Europe/Amsterdam
)
[interval] => DateInterval Object
(
[y] => 0
[m] => 0
[d] => 1
[h] => 0
[i] => 0
[s] => 0
[f] => 0
[invert] => 0
[days] =>
[from_string] =>
)
[recurrences] => 1
[include_start_date] => 1
[include_end_date] =>
)
</pre>17 Output for 8.3.5 Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
<pre>DatePeriod Object
(
[start] => DateTime Object
(
[date] => 2012-03-23 00:00:00.000000
[timezone_type] => 3
[timezone] => Europe/Amsterdam
)
[current] => DateTime Object
(
[date] => 2012-03-24 00:00:00.000000
[timezone_type] => 3
[timezone] => Europe/Amsterdam
)
[end] => DateTime Object
(
[date] => 2012-03-24 00:00:00.000000
[timezone_type] => 3
[timezone] => Europe/Amsterdam
)
[interval] => DateInterval Object
(
[y] => 0
[m] => 0
[d] => 1
[h] => 0
[i] => 0
[s] => 0
[f] => 0
[invert] => 0
[days] =>
[from_string] =>
)
[recurrences] => 1
[include_start_date] => 1
[include_end_date] =>
)
</pre>17 Output for 7.1.0 - 7.1.25 , 7.2.0 - 7.2.33 , 7.3.0 - 7.3.31 , 7.4.0 - 7.4.33 , 8.0.0 - 8.0.12 , 8.0.14 - 8.0.30 , 8.1.0 - 8.1.28 <pre>DatePeriod Object
(
[start] => DateTime Object
(
[date] => 2012-03-23 00:00:00.000000
[timezone_type] => 3
[timezone] => Europe/Amsterdam
)
[current] => DateTime Object
(
[date] => 2012-03-24 00:00:00.000000
[timezone_type] => 3
[timezone] => Europe/Amsterdam
)
[end] => DateTime Object
(
[date] => 2012-03-24 00:00:00.000000
[timezone_type] => 3
[timezone] => Europe/Amsterdam
)
[interval] => DateInterval Object
(
[y] => 0
[m] => 0
[d] => 1
[h] => 0
[i] => 0
[s] => 0
[f] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 0
[days] =>
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)
[recurrences] => 1
[include_start_date] => 1
)
</pre>17 Output for 7.3.32 - 7.3.33 , 8.0.13 <pre>DatePeriod Object
(
[start] => DateTime Object
(
[date] => 2012-03-23 00:00:00.000000
[timezone_type] => 3
[timezone] => UTC
)
[current] => DateTime Object
(
[date] => 2012-03-24 00:00:00.000000
[timezone_type] => 3
[timezone] => UTC
)
[end] => DateTime Object
(
[date] => 2012-03-24 00:00:00.000000
[timezone_type] => 3
[timezone] => UTC
)
[interval] => DateInterval Object
(
[y] => 0
[m] => 0
[d] => 1
[h] => 0
[i] => 0
[s] => 0
[f] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 0
[days] =>
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)
[recurrences] => 1
[include_start_date] => 1
)
</pre>17 Output for 5.4.30 - 5.4.45 , 5.5.14 - 5.5.38 , 5.6.0 - 5.6.38 , 7.0.0 - 7.0.33 <pre>DatePeriod Object
(
[start] => DateTime Object
(
[date] => 2012-03-23 00:00:00.000000
[timezone_type] => 3
[timezone] => Europe/Amsterdam
)
[current] => DateTime Object
(
[date] => 2012-03-24 00:00:00.000000
[timezone_type] => 3
[timezone] => Europe/Amsterdam
)
[end] => DateTime Object
(
[date] => 2012-03-24 00:00:00.000000
[timezone_type] => 3
[timezone] => Europe/Amsterdam
)
[interval] => DateInterval Object
(
[y] => 0
[m] => 0
[d] => 1
[h] => 0
[i] => 0
[s] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 0
[days] =>
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)
[recurrences] => 1
[include_start_date] => 1
)
</pre>17 Output for 5.4.17 - 5.4.29 , 5.5.0 - 5.5.13 <pre>DatePeriod Object
(
[start] => DateTime Object
(
[date] => 2012-03-23 00:00:00
[timezone_type] => 3
[timezone] => Europe/Amsterdam
)
[current] => DateTime Object
(
[date] => 2012-03-24 00:00:00
[timezone_type] => 3
[timezone] => Europe/Amsterdam
)
[end] => DateTime Object
(
[date] => 2012-03-24 00:00:00
[timezone_type] => 3
[timezone] => Europe/Amsterdam
)
[interval] => DateInterval Object
(
[y] => 0
[m] => 0
[d] => 1
[h] => 0
[i] => 0
[s] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 0
[days] =>
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)
[recurrences] => 1
[include_start_date] => 1
)
</pre>17 Output for 5.4.0 - 5.4.16 <pre>DatePeriod Object
(
)
</pre>17 preferences:dark mode live preview
248.47 ms | 401 KiB | 339 Q