PHP time

Summary: in this tutorial, you’ll learn how to work with the PHP time() function to get the current timestamp in the local timezone.

Introduction to Unix timestamps #

Computers store a date and time as a UNIX timestamp or a timestamp in short.

A timestamp is an integer that refers to the number of seconds between 1970-01-01 00:00:00 UTC (Epoch) and the date and time to be stored.

Computers store dates and times as timestamps because it is easier to manipulate an integer. For example, to add one day to a timestamp, it simply adds the number of seconds to the timestamp.

PHP provides some helpful functions that manipulate timestamps effectively.

Getting the current time #

To get the current time, you use the time() function:

function time(): intCode language: PHP (php)

The time() function returns the current UNIX timestamp since Epoch (January 1 1970 00:00:00 GMT). For example:

<?php

echo time(); // 1626752728Code language: PHP (php)

Try it

The return value is a big integer that represents the number of seconds since Epoch. To make the time human-readable, you use the date() function. For example:

<?php

$current_time = time();
echo date('Y-m-d g:ia', $current_time) . '<br>';Code language: PHP (php)

Try it

Output:

2021-07-13 5:47amCode language: PHP (php)

The date() function has two parameters.

Since the time() function returns a timestamp, you can add seconds to it.

Adding to / subtracting from a timestamp #

The following example shows how to add a week to the current time:

<?php

$current_time = time();
// 7 days later
$one_week_later =  $current_time + 7 * 24 * 60 * 60;

echo date('Y-m-d g:ia',$one_week_later);Code language: PHP (php)

Try it

In this example, we add 7 days * 24 hours * 60 minutes * 60 seconds to the current time.

Also, you can represent a time in the past by subtracting a number of seconds from the current time. For example:

<?php
$current_time = time();
 // 1 day ago
$yesterday = $current_time -  24 * 60 * 60;

echo date('Y-m-d g:ia',$yesterday);Code language: PHP (php)

Try it

timezone #

By default, the time() function returns the current time in the timezone specified in the PHP configuration file (php.ini).

To get the current timezone, you can use the date_default_timezone_get() function:

<?php

echo date_default_timezone_get(); Code language: PHP (php)

Try it

To set a specific timezone, you use the date_default_timezone_set(). It’s recommended that you use the UTC timezone.

The following shows how to use the date_default_timezone_set() function to set the current timezone to the UTC timezone:

<?php

date_default_timezone_set('UTC');Code language: PHP (php)

Try it

Making a Unix timestamp #

To make a Unix timestamp, you use the mktime() function:

mktime(
    int $hour,
    int|null $minute = null,
    int|null $second = null,
    int|null $month = null,
    int|null $day = null,
    int|null $year = null
): int|falseCode language: PHP (php)

The mktime() function returns a Unix timestamp based on its arguments. If you omit an argument, mktime() function will use the current value according to the local date and time instead.

The following example shows how to use the mktime() function to show that July 13, 2020, is on a Tuesday:

<?php

echo 'July 13, 2021 is on a ' . date('l', mktime(0, 0, 0, 7, 13, 2021));Code language: PHP (php)

Try it

Output:

July 13, 2021 is on a Tuesday

Summary #

  • Use the time() function to return the current timestamp since Epoch in local timezone.
  • Use the date_default_timezone_set() function to set a specific timezone.
  • Use the date() function to format the timestamp.
  • Use mktime() function to create a timestasmp based on the year, month, day, hour, minute, and second.
Did you find this tutorial useful?