get_date_from_gmt( string $date_string, string $format = ‘Y-m-d H:i:s’ ): string

Given a date in UTC or GMT timezone, returns that date in the timezone of the site.

Description

Requires a date in the Y-m-d H:i:s format.
Default return format of ‘Y-m-d H:i:s’ can be overridden using the $format parameter.

Parameters

$date_stringstringrequired
The date to be converted, in UTC or GMT timezone.
$formatstringoptional
The format string for the returned date.

Default:'Y-m-d H:i:s'

Return

string Formatted version of the date, in the site’s timezone.

Source

function get_date_from_gmt( $date_string, $format = 'Y-m-d H:i:s' ) {
	$datetime = date_create( $date_string, new DateTimeZone( 'UTC' ) );

	if ( false === $datetime ) {
		return gmdate( $format, 0 );
	}

	return $datetime->setTimezone( wp_timezone() )->format( $format );
}

Changelog

VersionDescription
1.2.0Introduced.

User Contributed Notes

  1. Skip to note 2 content

    get_date_from_gmt() does not accept a Unix Timestamp because date_create() doesn’t.

    If you need to provide a Unix Timestamp, you will need to convert it to a different format first like the following example:

    <?php
    
    $utc_timestamp = 1623096269;
    
    // This is a format that date_create() will accept
    $utc_timestamp_converted = date( 'Y-m-d H:i:s', $utc_timestamp );
    
    $output_format = 'Y-m-d H:i:s';
    
    // Now we can use our timestamp with get_date_from_gmt()
    $local_timestamp = get_date_from_gmt( $utc_timestamp_converted, $output_format );

You must log in before being able to contribute a note or feedback.