top of page

Understanding PHP Date Functions: A Comprehensive Guide

In web development and programming, managing dates and times is a common task, and PHP offers a robust set of date and time functions to simplify these operations. With PHP date functions, developers can perform a wide range of operations such as formatting dates, calculating time differences, working with time zones, and much more. Whether you need to display the current date on a webpage, parse date strings, or perform complex date arithmetic, the PHP date function provides the tools to handle these tasks efficiently and accurately.


This guide will explore the essential PHP date functions and demonstrate how to use them effectively in your web applications.


Table of Contents:

Formatting date and time using format codes

Using the date() function

strtotime()

date_create()

date_diff()

date_add()

Setting and Converting Timezones

Handling Daylight Saving Time (DST)


PHP Date Function

The PHP date function is the most commonly used date and time function. It formats a local date and time and returns the formatted date string.


The PHP date function takes two arguments:

  1. Format: The format of the date and time. This is specified using a string that contains format codes.

  2. Timestamp: The timestamp to format. If no timestamp is specified, the current time is used.


Formatting PHP date and time using format codes

The format of the PHP date and time is specified using a string that contains format codes. Each format code represents a different part of the date or time. For example, the format code Y represents the year, the format code m represents the month, and the format code d represents the day.


Here is a table of some of the most common PHP date format codes:

Format Code

Description

Y

Year (four digits)

y

Year (two digits)

m

Month (two digits)

M

Month (three letters)

F

Month (full name)

d

Day of the month (two digits)

D

Day of the week (three letters)

l

Day of the week (full name)

H

Hour (24-hour format)

h

Hour (12-hour format)

i

Minutes (two digits)

s

Seconds (two digits)

You can combine format codes to create custom date and time formats. For example, the following PHP date format code would format the date and time as 2023-09-19 16:41:01:

$format = "Y-m-d H:i:s";

Examples of common PHP date format

Here are some examples of common PHP date format:

  • Y-m-d - "2023-09-19"

  • d/m/Y - "19/09/2023"

  • F j, Y - "September 19, 2023"

  • l, F j, Y - "Tuesday, September 19, 2023"

  • H:i:s - "16:41:01"

  • h:i a - "4:41 PM"


Using the PHP date() function

To use the PHP date() function, simply pass the format code to the function as the first argument. If you want to format a specific timestamp, you can pass it to the function as the second argument.


For example, the following code would format the current date and time as 2023-09-19 16:41:01:

$date = date("Y-m-d H:i:s");

The following code would format the timestamp 1668794861 as 2023-09-19 16:41:01:

$date = date("Y-m-d H:i:s", 1668794861);

Date and Time Functions

PHP provides a number of built-in functions for working with date and time values. These functions can be used to parse, format, compare, and manipulate date and time values. The functions are:

  • strtotime()

  • date_create()

  • date_diff()

  • date_add()

strtotime()

The strtotime() function converts a human-readable date and time string into a Unix timestamp. A Unix timestamp is the number of seconds elapsed since the Unix epoch, which is 00:00:00 UTC on January 1, 1970.


The strtotime() function can be used to parse a wide variety of PHP date and time formats, including:

  • "2023-09-19 16:41:01"

  • "September 19, 2023 4:41 PM"

  • "Today"

  • "Next Monday"

  • "First day of next month"

Example:

$timestamp = strtotime("2023-09-19 16:41:01");  

echo $timestamp; // 1668794861

date_create()

The PHP date_create() function creates a new DateTime object from a date and time string or a Unix timestamp.


DateTime objects are more powerful than regular date and time strings, as they allow you to perform more complex operations on date and time values, such as adding and subtracting days, months, and years.


Example:

$dateTime = date_create("2023-09-19 16:41:01");  

echo $dateTime->format("Y-m-d H:i:s"); // 2023-09-19 16:41:01

date_diff()

The PHP date_diff() function calculates the difference between two DateTime objects. The difference is returned as a DateInterval object, which contains the number of years, months, days, hours, minutes, and seconds between the two dates.


Example:

$dateTime1 = date_create("2023-09-19 16:41:01"); 
$dateTime2 = date_create("2023-09-20 12:00:00");  

$dateDiff = date_diff($dateTime1, $dateTime2);  

echo $dateDiff->format("%d days, %h hours, %i minutes, %s seconds"); 
// 1 day, 16 hours, 19 minutes, 59 seconds

date_add()

The PHP date_add() function adds a specified interval to a DateTime object. The interval can be specified using a DateInterval object or a string that represents a date and time interval.


Example:

$dateTime = date_create("2023-09-19 16:41:01");  

$interval = new DateInterval("P1DT12H30M45S"); 
// 1 day, 12 hours, 30 minutes, 45 seconds

$dateTime->add($interval);  

echo $dateTime->format("Y-m-d H:i:s"); 
// 2023-09-20 09:11:46

The strtotime(), date_create(), date_diff(), and date_add() functions are some of the most important date and time functions in PHP. These functions can be used to parse, format, compare, and manipulate date and time values in a variety of ways.


PHP Timezones

PHP uses the Olson timezone database, which is a comprehensive database of timezones and their rules. The Olson database is regularly updated to reflect changes in timezones and DST transitions.


To view a list of all supported timezones in PHP, you can use the DateTimeZone::listIdentifiers() function.


Setting and Converting Timezones

To set the default timezone used by all date/time functions in a script, you can use the date_default_timezone_set() function.


To convert a date and time from one timezone to another, you can use the DateTime::setTimezone() function.


Example:

<!DOCTYPE html>
<html>
<head>
    <title>Date and Time Conversion</title>
</head>
<body>
    <h1>Date and Time Conversion</h1>
    
    <?php
    // Set the default timezone to UTC.
    date_default_timezone_set("UTC");

    // Create a DateTime object for the current date and time in UTC.
    $dateTime = new DateTime();

    // Convert the date and time to the America/Los_Angeles timezone.
    $dateTime->setTimezone(new DateTimeZone("America/Los_Angeles"));

    // Display the date and time in the America/Los_Angeles timezone.
    echo "<p>Date and Time in America/Los_Angeles Timezone: " . $dateTime->format("Y-m-d H:i:s") . "</p>";
    ?>

</body>
</html>

PHP Date and Time Conversion

Handling Daylight Saving Time (DST)

PHP automatically handles DST transitions. However, there are a few things to keep in mind when working with DST:

  • When storing dates and times in a database, you should store them in a UTC timezone. This will ensure that your dates and times are not affected by DST transitions.

  • When displaying dates and times to users, you should convert them to the user's local timezone. This will ensure that the dates and times are displayed correctly, regardless of the user's location.

Example:

<!DOCTYPE html>
<html>
<head>
    <title>User's Local Time</title>
</head>
<body>
    <h1>User's Local Time</h1>
    
    <?php
    // Get the user's local timezone.
    $userTimezone = date_default_timezone_get();

    // Create a DateTime object for the current date and time in UTC.
    $dateTime = new DateTime();

    // Convert the date and time to the user's local timezone.
    $dateTime->setTimezone(new DateTimeZone($userTimezone));

    // Display the date and time in the user's local timezone.
    echo "<p>Current Date and Time in Your Timezone ($userTimezone): " . $dateTime->format("Y-m-d H:i:s") . "</p>";
    ?>

</body>
</html>

PHP Date Function - User's Local Time

Working with timezones in PHP can be complex, but it is important to understand how to do it correctly in order to ensure that your dates and times are displayed and stored accurately.


Date Arithmetic

PHP allows you to perform arithmetic operations with dates. This means that you can add and subtract intervals from dates to produce new dates.


Intervals can be specified in a variety of ways, including:

  • Years

  • Months

  • Days

  • Hours

  • Minutes

  • Seconds


Example 1: Add or subtract an interval from a date

To add or subtract an interval from a date, you can use the DateTime::add() and DateTime::sub() methods, respectively.

<!DOCTYPE html>
<html>
<head>
    <title>Date Manipulation</title>
</head>
<body>
    <h1>Date Manipulation</h1>
    
    <?php
    // Create a DateTime object for the current date and time.
    $dateTime = new DateTime();

    // Display the original date and time.
    echo "<p>Original Date and Time: " . $dateTime->format("Y-m-d H:i:s") . "</p>";

    // Add 1 day and subtract 1 hour from the date and time.
    $dateTime->modify("+1 day -1 hour");

    // Display the modified date and time.
    echo "<p>Modified Date and Time: " . $dateTime->format("Y-m-d H:i:s") . "</p>";
    ?>

</body>
</html>

PHP Date Manipulation

Example 2: Calculate the difference between two dates

Calculate the difference between the two dates. To do this, you can use the date_diff() function.

<!DOCTYPE html>
<html>
<head>
    <title>Date Difference</title>
</head>
<body>
    <h1>Date Difference</h1>
    
    <?php
    // Create two DateTime objects for two different dates.
    $dateTime1 = new DateTime("2023-09-19 16:41:01");
    $dateTime2 = new DateTime("2023-09-20 12:00:00");

    // Display the two dates.
    echo "<p>Date 1: " . $dateTime1->format("Y-m-d H:i:s") . "</p>";
    echo "<p>Date 2: " . $dateTime2->format("Y-m-d H:i:s") . "</p>";

    // Calculate the difference between the two dates.
    $dateDiff = $dateTime1->diff($dateTime2);

    // Display the difference in days, hours, minutes, and seconds.
    echo "<p>Difference: " . $dateDiff->format("%d days, %h hours, %i minutes, %s seconds") . "</p>";
    ?>

</body>
</html>

PHP Date Difference

Date arithmetic is a powerful tool that can be used to manipulate dates in a variety of ways. By understanding how to use date arithmetic, you can improve the quality and functionality of your PHP applications.


Here are some additional examples of how to use date arithmetic in PHP:


Example 3: Calculate the next Monday

<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <h3>Next Monday will be on </h3>
    
    <?php
$dateTime = new DateTime(); // Create a DateTime object with the current date and time
$dateTime->modify("next Monday"); // Set it to the next Monday

echo $dateTime->format("Y-m-d"); // Output the date in the desired format
?>

</body>
</html>

PHP Date


Example 4: Calculate the number of days until Christmas

<!DOCTYPE html>
<html>
<head>
    <title>Days Until December 25, 2023</title>
</head>
<body>
    <h1>Days Until December 25, 2023</h1>
    
    <?php
    $today = new DateTime();
    $dateTime = new DateTime("2023-12-25");

    $dateDiff = $today->diff($dateTime);

    echo "<p>There are " . $dateDiff->format("%a days") . " until December 25, 2023.</p>";
    ?>

</body>
</html>

PHP Date 2


Example 5: Calculate the age of a person in years

<!DOCTYPE html>
<html>
<head>
    <title>Age Calculator</title>
</head>
<body>
    <h1>Age Calculator</h1>
    
    <form method="POST">
        <label for="dob">Enter your Date of Birth:</label>
        <input type="date" id="dob" name="dob" required>
        <input type="submit" value="Calculate Age">
    </form>

    <?php
    if ($_SERVER["REQUEST_METHOD"] === "POST") {
        // Get the entered date of birth from the form
        $dateOfBirth = new DateTime($_POST["dob"]);
        $today = new DateTime();

        // Check if the date of birth is in the future
        if ($dateOfBirth > $today) {
            echo "<p>Invalid date of birth</p>";
        } else {
            // Calculate the age
            $dateDiff = $dateOfBirth->diff($today);
            echo "<p>Your age is: " . $dateDiff->format("%y years") . "</p>";
        }
    }
    ?>

</body>
</html> 

PHP Date - How to calculate the age

PHP Date arithmetic is a versatile tool that can be used to solve a variety of problems related to dates and time. By understanding how to use date arithmetic, you can write more powerful and efficient PHP code.


Conclusion

PHP Date Functions are crucial tools for managing date and time-related operations in web development. They enable developers to format, parse, calculate, and manipulate dates and times effectively. Understanding these functions is essential for creating dynamic and accurate web applications that provide users with up-to-date information and a seamless experience.

bottom of page