Sunday, April 29, 2012

Get the Time() Result for the "Next Holiday" or "Next Month" in PHP

Something I often want to do is find out the first of the next month and to get the time() result for it.  By using a combination of date() and strtotime(), you can do that:

<?php

        // Example Time() Integer (for Thu, 15 Mar, 2012)

    $time_to_handle_for_next_month_conversion = 1331835943;

        // Date Conversions
   
    $interpretted_day = date('d', $time_to_handle_for_next_month_conversion);
    $interpretted_month = date('F', $time_to_handle_for_next_month_conversion);
    $interpretted_month_lowercased = strtolower($interpretted_month);
    $interpretted_year = date('Y', $time_to_handle_for_next_month_conversion);

        // Preset Day

    $new_day = 1;

        // Handle Case: December
   
    if($interpretted_month_lowercased == "december")
    {
        $new_month = "January";
        $new_year = $interpretted_year + 1;
    }
    else
    {

        // Handle All Other Cases

        switch($interpretted_month_lowercased)
        {
            case 'january':
                $new_month = "February";
                break;
               
            case 'february':
                $new_month = "March";
                break;
               
            case 'march':
                $new_month = "April";
                break;
               
            case 'april':
                $new_month = "May";
                break;
               
            case 'may':
                $new_month = "June";
                break;
               
            case 'june':
                $new_month = "July";
                break;
               
            case 'july':
                $new_month = "August";
                break;
               
            case 'august':
                $new_month = "September";
                break;
               
            case 'september':
                $new_month = "October";
                break;
               
            case 'october':
                $new_month = "November";
                break;
               
            case 'november':
                $new_month = "December";
                break;
        }
   
        $new_year = $interpretted_year;
    }

    $new_date_string =         $new_day        . " " .
                    $new_month        . " " .
                    $new_year;
                   
        // Results
                   
    $first_day_of_the_next_month_time_integer = strtotime($new_date_string);

        // Result = 1333256400 (Sun, 1 Apr, 2012)

?>

Note:  You could easily modify this function to return the "next Ramadan," "the next Halloween," "the next New Years," etc., and place a counter for how many more days, months, hours, etc., you need to wait for it.

Official Function Page: http://php.net/manual/en/function.time.php

// Note: All code appearing on the PHP Revolution blog by the blog owner is released under the Hacktivismo Enhanced-Source Software License Agreement (HESSLA), unless otherwise noted.  http://www.hacktivismo.com/about/hessla.php

No comments:

Post a Comment