Original Blog Link : https://code.tutsplus.com/tutorials/working-with-date-and-time-in-php--cms-31768
By Monty Shokeen on Feb 26, 2021
You'll often want to work with dates and times when developing websites. For example, you might need to show the last modified date on a post or mention how long ago a reader wrote some comment. You might also have to show a countdown of the days until a special event.
Luckily, PHP comes with some built-in date and time functions which will help us do all that and much more quite easily.
This tutorial will teach you how to format the current date and time in PHP. You will also learn how to get the timestamp from a date string and how to add and subtract different dates.
Getting the Date and Time in String Format
date($format, $timestamp) is one of the most commonly used date and time functions available in PHP. It takes the desired output format for the date as the first parameter and an integer as a timestamp value which needs to be converted to the given date format. The second parameter is optional, and omitting it will output the current date and time in string format based on the value of
$format parameter accepts a series of characters as valid values. Some of these characters have straightforward meanings:
Y gives you the full numeric representation of the year with 4 digits (2018), and
y only gives you the last two digits of the current year (18). Similarly,
H will give you the hour in 24-hour format with leading zeros, but
h will give you the hour in 12-hour format with leading zeros.
Here are some of the most common date format characters and their values.
|day of the month with leading zeros||03 or 17|
|day of the month without leading zeros||3 or 17|
|day of the week as a three-letter abbreviation||Mon|
|full day of the week||Monday|
|month as a number with leading zeros||09 or 12|
|month as a number without leading zeros||9 or 12|
|month as a three-letter abbreviation||Sep|
There are many other special characters to specify the output for the
date() function. It is best to consult the format characters table in the
date() function documentation for more information about special cases.
Let's see some practical examples of the
date() function now. We can use it to get the current year, current month, current hour, etc., or we can use it to get a complete date string.
// Output — 2018 echo date('Y'); // Output — September 2018 echo date('F Y'); // Output — 13 September, 2018 echo date('d F, Y'); // Output — 13 September, 2018 (Thursday) echo date('d F, Y (l)');
You can also use the
date() function to output the time. Here are some of the most commonly used time format characters:
|hours in 12-hour format without leading zeros||1 or 12|
|hours in 12-hour format with leading zeros||01 or 12|
|hours in 24-hour format without leading zeros||1 or 13|
|hours in 24-hour format with leading zeros||01 or 13|
|am/pm in lowercase||am|
|am/pm in uppercase||AM|
|minutes with leading zeros||09 or 15|
|seconds with leading zeros||05 or 30|
And here are some examples of outputting formatted time strings.
// Output — 11:03:37 AM echo date('h:i:s A'); // Output — Thursday, 11:04:09 AM echo date('l, h:i:s A'); // Output — 13 September 2018, 11:05:00 AM echo date('d F Y, h:i:s A');
It is also important that you escape these special characters if you want to use them inside your date string.
// Output — CEST201813am18 1115 Thursday. echo date('Today is l.'); // Output — Today is Thursday. echo date('\T\o\d\a\y \i\s l.'); // Output — Today is Thursday. echo 'Today is '.date('l.');
Get the Unix Timestamp
Sometimes, you will need to get the value of the current Unix timestamp in PHP. This is very easy with the help of the
time() function. It returns an integer value which describes the number of milliseconds that have passed since 1 January 1970 at midnight (00:00:00) GMT.
You can also use this function to go back and forth in time. To do so, all you have to do is subtract the right number of seconds from the current value of
time() and then change the resulting value into the desired date string. Here are two examples:
10*60*60*24; // Output — It will be Sunday 10 days later. echo 'It will be '.date('l', $ten_days_later).' 10 days later.'; $ten_days_ago = time() - 10*60*60*24; // Output — It was Monday 10 days ago. echo 'It was '.date('l', $ten_days_ago).' 10 days ago.';$ten_days_later = time() +
One important thing you should remember is that the timestamp value returned by
time() is time-zone agnostic and gets the number of seconds since 1 January 1970 at 00:00:00 UTC. This means that at a particular point in time, this function will return the same value in the US, Europe, India, or Japan.
Another way to get the timestamp for a particular date would be to use the
mktime($hour, $minute, $second, $month, $day, $year) function. When all the parameters are omitted, this function just uses the current local date and time to calculate the timestamp value. This function can also be used with
date() to generate useful date and time strings.
1, 1, 1, 12, 3, 1994); // Output — It was Saturday on 03 December, 1994. echo 'It was '.date('l', $some_time).' on '.date('d F, Y', $some_time).'.';$some_time = mktime(
time() can be used to go back and forth to a period of time, while
mktime() is useful when you want to go to a particular point in time.