PHP Date & Strtotime Cheat Sheet with PDF

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
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-26

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 26

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: 2019-01-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-08-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 12:00:00

 

 

PDF Download

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

 

SHARE ON

The Author: Dan Englishby

PHP Date & Strtotime Cheat Sheet with PDF
Posted in PHP

You May Also Like

2 thoughts on “PHP Date & Strtotime Cheat Sheet with PDF

  1. Good effort! PDF is a nice touch, too.

    There are multiple typos in the comments/results, such as
    – Example 2 should be 26, not 05
    – Noon and Midnight are both 00:00:00

    I was just skimming so there may be more.

    It would also be good to demonstrate or at least mention time zones and that Datetime immutable is really what you should be using to do any of this.

Leave a Reply

Your email address will not be published.