wp_timezone_string(): string

Retrieves the timezone of the site as a string.

Description

Uses the timezone_string option to get a proper timezone name if available, otherwise falls back to a manual UTC ± offset.

Example return values:

  • ‘Europe/Rome’
  • ‘America/North_Dakota/New_Salem’
  • ‘UTC’
  • ‘-06:30’
  • ‘+00:00’
  • ‘+08:45’

Return

string PHP timezone name or a ±HH:MM offset.

Source

function wp_timezone_string() {
	$timezone_string = get_option( 'timezone_string' );

	if ( $timezone_string ) {
		return $timezone_string;
	}

	$offset  = (float) get_option( 'gmt_offset' );
	$hours   = (int) $offset;
	$minutes = ( $offset - $hours );

	$sign      = ( $offset < 0 ) ? '-' : '+';
	$abs_hour  = abs( $hours );
	$abs_mins  = abs( $minutes * 60 );
	$tz_offset = sprintf( '%s%02d:%02d', $sign, $abs_hour, $abs_mins );

	return $tz_offset;
}

Changelog

VersionDescription
5.3.0Introduced.

User Contributed Notes

  1. Skip to note 2 content
    /**
     * If you want to show both timezone_string & gmt_offset
     * Preview: Asia/Dhaka [+06:00] or +06:00
     */
    
    // function goes to theme's functions.php file or plugin's file
    function wpdocs_custom_timezone_string() {
        $timezone_string = get_option( 'timezone_string' );
        $offset  = (float) get_option( 'gmt_offset' );
        $hours   = (int) $offset;
        $minutes = ( $offset - $hours );
        $sign      = ( $offset < 0 ) ? '-' : '+';
        $abs_hour  = abs( $hours );
        $abs_mins  = abs( $minutes * 60 );
        $tz_offset = sprintf( '%s%02d:%02d', $sign, $abs_hour, $abs_mins );
        $timezone = $timezone_string ? $timezone_string . ' [' . $tz_offset . ']' : $tz_offset;
    
        return $timezone;
    }
    
    // Usage
    echo esc_html( wpdocs_custom_timezone_string() );

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