# Counting Days So Far This Year..

I want to count how many days have passed this year so far.

I've attached how I'm doing right now.. it seems a bit.. robust.

Is there a better way to do this?  Is there a way to calculate business days.
``````<?php
if( function_exists( 'date_default_timezone_set' ) )
{
// Set the default timezone to US/Eastern
date_default_timezone_set( 'US/Eastern' );
}

// Will return the number of days between the two dates passed in
function count_days( \$a, \$b )
{
// First we need to break these dates into their constituent parts:
\$gd_a = getdate( \$a );
\$gd_b = getdate( \$b );

// Now recreate these timestamps, based upon noon on each day
// The specific time doesn't matter but it must be the same each day
\$a_new = mktime( 12, 0, 0, \$gd_a['mon'], \$gd_a['mday'], \$gd_a['year'] );
\$b_new = mktime( 12, 0, 0, \$gd_b['mon'], \$gd_b['mday'], \$gd_b['year'] );

// Subtract these two numbers and divide by the number of seconds in a
//  day. Round the result since crossing over a daylight savings time
//  barrier will cause this time to be off by an hour or two.
return round( abs( \$a_new - \$b_new ) / 86400 );
}

// Prepare a few dates
\$date1 = strtotime( '1/01/2008 12:01am' );
\$date2 = strtotime( '10/01/2008 8:36pm' );
\$dayspassed = count_days(\$date1, \$date2);
echo \$dayspassed;
?>
``````
###### Who is Participating?

Commented:
Hi,
Here is a much shorter version.
``````<?php
\$var1 = strtotime(date ("Y-m-d H:i:s"));
\$var2 = strtotime("01/01/".date('Y') );
\$rez = round((\$var1 - \$var2) / (60*60*24)); //seconds in a day

echo 'Today: '.\$var1.'<br>';
echo 'Rez: '.\$rez;
?>
``````
0

Author Commented:
With the above solution I also ahve issues with it not automatically knowing today's date...

\$date1 = strtotime( '1/01/2008 12:01am' );
\$date2 = strtotime( '10/01/2008 8:36pm' );

Any help here would be great... (and if there is a way for it to always know what the 1st of the year is)...
0

Commented:
I'm sorry... that wasn't a final version, I skipped a few things.
Hope you like it.
``````<?php
function return_days_passed(\$new_date = 0){
if(\$new_date != 0)
\$new_date = strtotime(\$new_date);
else
\$new_date = strtotime(date ("Y-m-d H:i:s"));
\$first_day = strtotime("01/01/".date('Y H:i:s',\$new_date) );
return round((\$new_date - \$first_day) / (60*60*24)); //seconds in a day
}
echo return_days_passed().'<br>';
echo return_days_passed('05/01/2005 8:36pm');
?>
``````
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.