Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# Counting Days So Far This Year..

Posted on 2008-10-01
Medium Priority
8,771 Views
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;
?>
``````
0
Question by:cstormer
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 2

Author Comment

ID: 22621241
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

LVL 3

Accepted Solution

sistemu earned 2000 total points
ID: 22622043
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

LVL 3

Assisted Solution

sistemu earned 2000 total points
ID: 22622121
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

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Part of the Global Positioning System A geocode (https://developers.google.com/maps/documentation/geocoding/) is the major subset of a GPS coordinate (http://en.wikipedia.org/wiki/Global_Positioning_System), the other parts being the altitude and t…
Since pre-biblical times, humans have sought ways to keep secrets, and share the secrets selectively.  This article explores the ways PHP can be used to hide and encrypt information.
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
###### Suggested Courses
Course of the Month6 days, 9 hours left to enroll