While working with the MySQL database in PHP, we may need to record the time instance at which an event occurs. This instance can be stored as a table record. We can the instance as a table record by using the datetime
or timestamp
MySQL data types. The problem associated with this procedure is that it cannot display the date in a very human-friendly and easily-readable format.
We get the following from the datetime
and timestamp
MySQL table columns:
2021-11-17 13:02:18
But we may want to display the date in the format shown in the image below:
This shot teaches us how to display a date in this format, as a PHP script.
Before we learn to display the date in the aforementioned format, let’s look at the problems associated with MySQL table timestamp columns.
datetime
from the table is a string.timestamp
, which usually presents datetime
in the format 2021-11-17 13:02:18
.datetime
strings to a Unix timestampA combination of two PHP functions, the strtotime()
and the date()
functions, will produce an output like the one shown in the image above.
strtotime()
function converts any given date string into a Unix timestamp. It only accepts the date string as a parameter.date()
function outputs the current time, or the time relative to the provided timestamp (if any), in the specified format. It takes the format we wish to display the date in and the optional timestamp as its two parameters.Now, we will delve into some code examples.
The code below is an incorrect way of trying to get the output we’ve shown above, which may be our first approach while trying out solutions to that problem for the first time.
The output is not what we want, and that is because we didn’t convert the timestamp into a proper Unix timestamp before passing it to the date()
function.
<?php$mytimestamp = '2021-11-17 13:02:18';// $dating = intval($mytimestamp);// echo $dating;$converted = date('m d, Y',$mytimestamp);echo $converted;?>
of a specific value fetched from the database in the provided code,##
In this second code, we use the strtotime()
function to convert the datetime
string from a database table into a Unix timestamp. Then, with the help of the date()
function, we set the timestamp to various date formats of our choice.
This is the number of seconds since the Unix epoch time (01-01-1970)
.
For more tips on the PHP date()
function, we can see this post.
Note: The escape character is used in the code snippet below to escape the words that are just used as text, so that they are not given special interpretation by the function.
In the code below, a datetime
string, saved in the variable $d
, is converted to a Unix timestamp with the strtotime()
function. It is then saved to the variable $ad
on line 5.
Note: To use the current date and time instead of a specific value fetched from the database in the provided code, comment out
$d = '2021-11-17 13:02:18';
with//
and uncomment$d = date('Y-m-d H:i:s');
in the provided code, it will assign the current datetime to the variable$d
.
<?php//saving my database fetched datetime in a variable$d = '2021-11-17 13:02:18';// Uncomment this line to use the current date and time//$d = date('Y-m-d H:i:s');//force my db datetime into unix timestamp$ad = strtotime($d);//see what $ad variable value looks likeecho $ad."\n";//use $ad the timestamp to get date$realdate = date('M d, Y',$ad);//get another fancy date$real = date('l F jS, Y',$ad);//a more fancy one$realfancy = date('\t\h\i\s \i\s \t\h\e zS \d\a\y, \i\n Y',$ad);//let add time to it$realdateTime = date('\O\n: dS M, Y \B\y: ga',$ad);//the date now looks like what I initially wantedecho $realdate ."\n";echo $real ."\n";echo $realfancy ."\n";echo $realdateTime ."\n";?>
With the help of the date()
function and the value of $ad
, a timestamp is used to set and show dates and time in different formats.