How to format date and time in PHP

Updated: January 9, 2024 By: Guest Contributor Post a comment

Overview

Working with dates and times is a common task in many PHP applications. Properly formatting these values helps ensure clarity and consistency across different interfaces.

Before we start formatting dates and times, make sure that PHP is installed on your system and that you have access to a text editor to write your PHP scripts. To output the results, you can use a local server or command-line interface.

Basic Date and Time Formatting

PHP provides the date() function which can be used to format date and time. Here’s a simple example to display the current date and time:

<?php
    echo date('Y-m-d H:i:s');
?>

This will output the current date and time in the format of Year-Month-Day Hours:Minutes:Seconds.

Custom Date and Time Formatting

You can customize the format by using the different format characters provided by PHP:

<?php
    echo date('F j, Y, g:i a'); // Outputs: March 10, 2023, 5:30 pm
?>

Feel free to mix and match the format characters to get the desired output.

Timezone Handling

To ensure accurate date and time representation, setting the default timezone is crucial. Use date_default_timezone_set() to set your desired timezone:

<?php
    date_default_timezone_set('America/New_York');
    echo date('Y-m-d H:i:s');
?>

Now the date and time will be displayed according to the ‘America/New_York’ timezone.

DateTime Class

For more advanced date and time manipulation, PHP’s DateTime class is quite powerful. Here’s how you instantiate a DateTime object and format the date:

<?php
    $date = new DateTime();
    echo $date->format('Y-m-d');
?>

You can specify a date string when instantiating to work with a specific date and time.

Internationalization

If you need to display dates in different locales, use the IntlDateFormatter class:

<?php
    $formatter = new IntlDateFormatter('fr_FR', IntlDateFormatter::FULL, IntlDateFormatter::FULL);
    echo $formatter->format(new DateTime());
?>

This will display the date and time in a format appropriate for the French locale.

Manipulating Dates and Times

Use the DateTime::modify() method for date arithmetic. This lets you modify the DateTime object by adding or subtracting time:

<?php
    $date = new DateTime('2023-03-10');
    $date->modify('+1 day');
    echo $date->format('Y-m-d');
?>

This will display ‘2023-03-11’, indicating a date one day after the original.

Comparison and Difference

To compare two dates, you can use the comparison operators, but for a more comprehensive difference, use DateTime::diff():

<?php
    $date1 = new DateTime('2023-03-10');
    $date2 = new DateTime('2024-03-10');
    $interval = $date1->diff($date2);
    echo $interval->format('%R%a days');
?>

This will show the difference in days between the two dates.

Handling UNIX Timestamps

The DateTime class can also work with UNIX timestamps directly:

<?php
    $date = new DateTime('@1633039200');
    echo $date->format('Y-m-d H:i:s');
?>

Make sure to prefix the timestamp with an at symbol ‘@’ when using this approach.

Working with immutables

PHP 5.5 introduced the DateTimeImmutable class which behaves like DateTime but does not change the original object upon modification:

<?php
    $date = new DateTimeImmutable('2023-03-10');
    $newDate = $date->add(new DateInterval('P10D'));
    echo $newDate->format('Y-m-d');
?>

The original $date object remains unaltered.

Conclusion

PHP’s date and time functionalities are versatile and cater to most requirements, from basic to advanced levels. Understanding the various functions and classes available for date and time formatting and manipulation is essential for effectively managing these types of data in your applications.