# Php > Statistics and Counters Code Examples

## Time Left

``` Time Left time_left() <?php /* Time Left - A function to find out how many days, hours, secs, mins that is left until the target I was very sad with most of the countdown scripts that I had found that was for php because they didn't support time for the target. So I needed one very bad and I have looked all over and didn't find one that would do what I wanted, so I created this one that really works. All you have to do is call the function time_left(\$target_month, \$target_day, \$target_year, \$target_hour, \$target_min, \$target_sec, \$target_am_pm) and it will return the time that it is left until the target. It supports both 12 or 24 hours format. To use the 12 hour format, enter AM or PM in the \$target_am_pm. When using the 12 hour format, you can only enter 1 - 12 in the field. To use the 24 hour format, leave the \$target_am_pm blank. When using the 24 hour format, you can only enter 0 - 23 in the field. 24 Hours Format 12AM = 0 1AM = 1 2AM = 2 3AM = 3 4AM = 4 5AM = 5 6AM = 6 7AM = 7 8AM = 8 9AM = 9 10AM = 10 11AM = 11 12PM = 12 1PM = 13 2PM = 14 3PM = 15 4PM = 16 5PM = 17 6PM = 18 7PM = 19 8PM = 20 9PM = 21 10PM = 22 11PM = 23 Error Codes -1 = There's no time left to the target. -2 = Error: Month Format Incorrect (Must be in the 1 - 12 range) -3 = Error: Day Format Incorrect (Must be in the 1 - 31 range) -4 = Error: Year Format Incorrect (Must be at least 4 chars long and it must be in the 1950 - 2050 range) -5 = Error: Hour Format Incorrect (If using 12 hour format, must be in the 1 - 12 rnage, if using 24 hour format, must be in the 0 - 23 range) -6 = Error: Min Format Incorrect (Must be in the 0 - 59 range) -7 = Error: Sec Format Incorrect (Must be in the 0 - 59 range) */ define("_Time_Left_In_Target", -1); define("_Error_Target_Month_Format", -2); define("_Error_Target_Day_Format", -3); define("_Error_Target_Year_Format", -4); define("_Error_Target_Hour_Format", -5); define("_Error_Target_Min_Format", -6); define("_Error_Target_Sec_Format", -7); function time_left(\$target_month, \$target_day, \$target_year, \$target_hour, \$target_min, \$target_sec, \$target_am_pm) { if (\$target_month < 1 or \$target_month > 12) { return _Error_Target_Month_Format; } if (\$target_day < 1 or \$target_day > 31) { return _Error_Target_Day_Format; } if (\$target_year < 1950 or \$target_year > 2050 or strlen(\$target_year) < 4 or strlen(\$target_year) > 4) { return _Error_Target_Year_Format; } if (\$target_am_pm == "AM" or \$target_am_pm == "PM") {// 12 Hours Format if (\$target_hour < 1 or \$target > 12) { return _Error_Target_Hour_Format; } else { if (\$target_am_pm == "AM" && \$target_hour == 12) { \$target_hour = 0; } elseif (\$target_am_pm == "PM" && \$target_hour >= 1 && \$target_hour <= 11) { \$target_hour = \$target_hour + 12; } } } else {// 24 Hours Format if (\$target_hour < 0 or \$target_hour > 23) { return _Error_Target_Hour_Format; } } if (\$target_min < 0 or \$target_min > 59) { return _Error_Target_Min_Format; } if (\$target_sec < 0 or \$target_sec > 59) { return _Error_Target_Sec_Format; } \$target = mktime(\$target_hour, \$target_min, \$target_sec, \$target_month, \$target_day, \$target_year); \$diff = \$target - time(); \$time_left["days"] = (\$diff - (\$diff % 86400)) / 86400; \$diff = \$diff - (\$time_left["days"] * 86400); \$time_left["hours"] = (\$diff - (\$diff % 3600)) / 3600; \$diff = \$diff - (\$time_left["hours"] * 3600); \$time_left["mins"] = (\$diff - (\$diff % 60)) / 60; \$diff = \$diff - (\$time_left["mins"] * 60); \$time_left["secs"] = (\$diff - (\$diff % 1)) / 1; if (\$time_left["days"] < 0 or \$time_left["hours"] < 0 or \$time_left["mins"] < 0 or \$time_left["secs"] < 0) { return _Time_Left_In_Target; } else { return \$time_left; } } ?> ```