DEV Community

Dan Englishby
Dan Englishby

Posted on • Originally published at codewall.co.uk

PHP Date & Strtotime Cheat Sheet with PDF

If you want to bookmark the original post, feel free with the following link - https://www.codewall.co.uk/php-date-strtotime-cheat-sheet/

If you've been developing some projects that are data-rich like me, you will of seen yourself using the Date function and the Date function mixed with strtotime, Date & strtotime are very powerful tools, enabling you to set date criteria very swiftly, no matter the scenario. It's simply all about knowing how to do it, as there are a lot of commands you can give these functions that are extremely useful. For example, '-7 days'. This article will be an online cheat sheet, but at the end of the article, there will be a download link with the most popular 'cheats' that can be printed perfectly on an A4 piece of paper. You can download the PDF Here or at the end of this page.

Current Date & Time Formatting

Let's start with plain old Date formatting, there are hundreds of variations available, but you will probably only ever use a few! Please Note: All examples in this section work with the Current Date Time, meaning the real-time-stamp of your computer at the time of execution!

4 Digit Year (#4-digit-year)

  echo date('Y'); // 2019
2 Digit Year

    echo date('y'); // 19
Month Number

    echo date('m'); // 08
Day Number
    echo date('d'); // 26
Date With 2 Digit Year

    echo date('y-m-d'); // 19-08-26
Date With 4 Digit Year

    echo date('Y-m-d'); // 2019-08-26
12 Hour & 24 Hour Format Hours

Quick note: There are 2 ways to access the hour from the date() function, use the following parameters to yield an identical result -

  • date('g') -  (12 Hour Format) or date('G') - (24 Hour Format)
  • date('h') -  (12 Hour Format) or date('H') - (24 Hour Format)

    echo date('h'); // 11 (am) (12 Hour Format Style)
    echo date('H'); // 11 (am) (24 Hour Format Style)
    echo date('g'); // 11 (am) (12 Hour Format Style)
    echo date('G'); // 11 (am) (24 Hour Format Style)
Minutes

    echo date('i'); // outputs: 08 (Minutes 00-59)
Seconds

    echo date('s'); // outputs: 56 (Seconds 00-59)
Date Time Stamp

Now with all of these parameters in thought, we can produce a proper date-time stamp in the format of YYYY-MM-DD HH:MM:SS


    echo date('Y-m-d h:i:s'); // 2019-08-26 09:48:01

And if we want to do it the other way, swapping the place of the year so that the format is DD-MM-YYYY HH:MM:SS


    echo date('d-m-Y h:i:s'); // 2019-08-26 09:48:01

Custom Date & Time Formatting With strtotime

Using a custom date or date-time with the date function is very straight forward. All's you need to do is pass in the date with the strtotime function after the formatting parameters is set. See the example below, notice that the passed in date format is YYYY-MM-DD and that the actual output is DD-MM-YYYY because of the specified formatting. Example 1


    echo date('d-m-Y h:i:s', strtotime('2018-01-31 00:00:01')); // 31-01-2018 12:00:01

This exact methodology of using the date function will work with all the formatting displayed in the first section of this article, Example 2


    echo date('Y-m-d', strtotime('2019-08-26')); // outputs 2019-08-05

So, the date function will format the strtotime date passed into whichever format parameters are specified. So another example, to get the day of the month number from the date passed in goes like this - Example 3


    echo date('d', strtotime('2019-08-26')); // outputs 05

Date & Time Manipulation with strtotime

To be honest, strtotime is an absolute godsend, being able to give it a parameter in a language that you actually speak is awesome. Eg. 'First day of this month' or 'First day of this week' and so on. This can be utilized without a custom date, so basically, the date-time of your server, or a date-time of your specification. In this next section, I will demonstrate both use-cases.

First day of the month

    // Using server date-time
    echo date('Y-m-d h:i:s', strtotime('first day of this month')); // 2019-08-01 19:35:00

    //Using custom date-time 
    echo date('Y-m-d h:i:s', strtotime('first day of this month', strtotime('2019-12-31 19:00:00'))); // 2019-12-01 07:00:00
Last day of the month

    // Using server date-time
    echo date('Y-m-d h:i:s', strtotime('last day of this month')); // 2019-08-31 19:35:00

    //Using custom date-time 
    echo date('Y-m-d h:i:s', strtotime('last day of this month', strtotime('2019-12-31 19:00:00'))); // 2019-12-01 07:00:00
Subtract days from date

    // Using server date-time
    echo date('Y-m-d H:i:s', strtotime('-7 days')); // Outputs: 2019-08-19 11:43:59

    //Using custom date-time 
    echo date('Y-m-d H:i:s', strtotime('-7 days', strtotime('2019-08-13 14:00:00'))); // Outputs: 2019-08-06 14:00:00
Add days to date

    // Using server date-time
    echo date('Y-m-d H:i:s', strtotime('+7 days')); // Outputs: 2019-09-01 11:43:59

    //Using custom date-time 
    echo date('Y-m-d H:i:s', strtotime('+7 days', strtotime('2019-08-13 14:00:00'))); // Outputs: 2019-08-20 14:00:00

Subtract months from date

    // Using server date-time
    echo date('Y-m-d H:i:s', strtotime('-7 months')); // Outputs: 2019-01-26 11:56:06

    //Using custom date-time
    echo date('Y-m-d H:i:s', strtotime('-7 months', strtotime('2019-08-13 14:00:00'))); // Outputs: 2020-03-13 14:00:00
Add months to date

    // Using server date-time
    echo date('Y-m-d H:i:s', strtotime('+7 months')); // Outputs: 2020-03-26 11:56:45

    //Using custom date-time
    echo date('Y-m-d H:i:s', strtotime('+7 months', strtotime('2019-08-13 14:00:00'))); // Outputs: 2020-03-13 14:00:00
Subtract years from date

    // Using server date-time
    echo date('Y-m-d H:i:s', strtotime('-5 years')); // Outputs: 2014-08-26 11:57:16

    //Using custom date-time
    echo date('Y-m-d H:i:s', strtotime('-5 years', strtotime('2019-08-13 14:00:00'))); // Outputs: 2014-08-13 14:00:00
Add years to date

    // Using server date-time
    echo date('Y-m-d H:i:s', strtotime('+7 years')); // Outputs: 2024-03-26 11:48:16

    //Using custom date-time
    echo date('Y-m-d H:i:s', strtotime('+7 years', strtotime('2019-08-13 14:00:00'))); // Outputs: 2024-03-13 14:00:00
Subtract hours from date

    // Using server date-time
    echo date('Y-m-d H:i:s', strtotime('-12 hours')); // Outputs: 2019-08-25 23:21:23

    //Using custom date-time
    echo date('Y-m-d H:i:s', strtotime('-12 hours', strtotime('2019-08-13 14:00:00'))); // Outputs: 2019-08-13 02:00:00
Add hours to date

    // Using server date-time
    echo date('Y-m-d H:i:s', strtotime('+12 hours')); // Outputs: 2019-08-26 23:21:53

    //Using custom date-time
    echo date('Y-m-d H:i:s', strtotime('+12 hours', strtotime('2019-08-13 14:00:00'))); // Outputs: 2019-08-14 02:00:00
Subtract minutes from date

    // Using server date-time
    echo date('Y-m-d H:i:s', strtotime('-60 minutes')); // Outputs: 2019-08-26 10:48:23

    //Using custom date-time
    echo date('Y-m-d H:i:s', strtotime('-60 minutes', strtotime('2019-08-13 14:00:00'))); // Outputs: 2019-08-13 02:00:00
Add minutes to date

    // Using server date-time
    echo date('Y-m-d H:i:s', strtotime('+60 minutes')); // Outputs: 2019-08-26 12:30:33

    //Using custom date-time
    echo date('Y-m-d H:i:s', strtotime('+60 minutes', strtotime('2019-08-13 14:00:00'))); // Outputs: 2019-08-13 13:00:00
Subtract seconds from date
    // Using server date-time
    echo date('Y-m-d H:i:s', strtotime('-300 seconds')); // Outputs: 2019-08-26 11:40:33

    //Using custom date-time
    echo date('Y-m-d H:i:s', strtotime('-300 seconds', strtotime('2019-08-13 14:00:00'))); // Outputs: 2019-08-13 13:55:00
Add seconds to date

    // Using server date-time
    echo date('Y-m-d H:i:s', strtotime('+60 seconds')); // Outputs: 2019-08-26 11:50:58

    //Using custom date-time
    echo date('Y-m-d H:i:s', strtotime('+60 seconds', strtotime('2019-08-13 14:00:00'))); // Outputs: 2019-08-13 14:05:00
Get the yesterdays date

    // Using server date-time
    echo date('Y-m-d H:i:s', strtotime('yesterday')); // Outputs: 2019-08-25 00:00:00

    //Using custom date-time
    echo date('Y-m-d H:i:s', strtotime('yesterday', strtotime('2019-08-13 14:00:00'))); // Outputs: 2019-08-12 00:00:00
Get tomorrows date

    // Using server date-time
    echo date('Y-m-d H:i:s', strtotime('tomorrow')); // Outputs: 2019-08-27 00:00:00

    //Using custom date-time
    echo date('Y-m-d H:i:s', strtotime('tomorrow', strtotime('2019-08-13 14:00:00'))); // Outputs: 2019-08-14 00:00:00
Get next date

Note: the next parameter works along with day, month and year.

    // Using server date-time
    echo date('Y-m-d H:i:s', strtotime('next month')); // Outputs: 2019-09-26 20:40:43

    //Using custom date-time
    echo date('Y-m-d H:i:s', strtotime('next year', strtotime('2019-08-13 14:00:00'))); // Outputs: 2020-08-13 14:00:00
Get previous date

    // Using server date-time
    echo date('Y-m-d H:i:s', strtotime('previous month')); // Outputs: 2019-07-26 20:40:43

    //Using custom date-time
    echo date('Y-m-d H:i:s', strtotime('previous year', strtotime('2019-08-13 14:00:00'))); // Outputs: 2018-08-13 14:00:00
Next day name

Note: short month name or full month name can be used, eg. Sat or Saturday


    echo date('Y-m-d H:i:s', strtotime('next saturday')); // Outputs: 2019-08-31 00:00:00
Last day name

Note: short month name or full month name can be used, eg. Sat or Saturday

    echo date('Y-m-d H:i:s', strtotime('last saturday')); // Outputs: 2019-08-24 00:00:00
First day of month name

Note: short month name or full month name can be used, eg. Feb or February

    echo date('Y-m-d H:i:s', strtotime('first day of February')); // Outputs: 2019-02-01 00:00:00
Last day of month name

Note: short month name or full month name can be used, eg. Feb or February

    echo date('Y-m-d H:i:s', strtotime('last day of February')); // Outputs: 2019-02-28 00:00:00
Noon And Midnight Date
    echo date('Y-m-d H:i:s', strtotime('midnight')); // Outputs: 2019-08-26 00:00:00

    echo date('Y-m-d H:i:s', strtotime('noon')); // Outputs: 2019-08-26 00:00:00

    PDF Download Feel free to download this compacted cheat-sheet pdf. You can download the PDF Here

If you want to bookmark the original post, feel free with the following link - https://www.codewall.co.uk/php-date-strtotime-cheat-sheet/

Top comments (0)