Index: tests/phpunit/tests/date/getPermalink.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- tests/phpunit/tests/date/getPermalink.php	(date 1573822697189)
+++ tests/phpunit/tests/date/getPermalink.php	(date 1573822697189)
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @group date
+ * @group datetime
+ */
+class Tests_Date_Get_Permalink extends WP_UnitTestCase {
+
+	function tearDown() {
+		delete_option( 'permalink_structure' );
+		update_option( 'timezone_string', 'UTC' );
+		date_default_timezone_set( 'UTC' );
+
+		parent::tearDown();
+	}
+
+	/**
+	 * @ticket 48623
+	 */
+	public function test_should_return_correct_date_permalink_with_changed_time_zone() {
+		$timezone = 'America/Chicago';
+		update_option( 'timezone_string', $timezone );
+		update_option( 'permalink_structure', '/%year%/%monthnum%/%day%/%hour%/%minute%/%second%' );
+		date_default_timezone_set( 'UTC' );
+
+		$post_id = self::factory()->post->create(
+			array(
+				'post_date'     => '2018-07-22 21:13:23',
+				'post_date_gmt' => '2018-07-23 03:13:23',
+			)
+		);
+
+		$this->assertEquals( 'http://example.org/2018/07/22/21/13/23', get_permalink( $post_id ) );
+
+		date_default_timezone_set( $timezone );
+		$this->assertEquals( 'http://example.org/2018/07/22/21/13/23', get_permalink( $post_id ) );
+	}
+}
Index: src/wp-includes/link-template.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/wp-includes/link-template.php	(date 1573725321000)
+++ src/wp-includes/link-template.php	(date 1573821348176)
@@ -166,7 +166,6 @@
 	$permalink = apply_filters( 'pre_post_link', $permalink, $post, $leavename );
 
 	if ( '' != $permalink && ! in_array( $post->post_status, array( 'draft', 'pending', 'auto-draft', 'future' ) ) ) {
-		$unixtime = strtotime( $post->post_date );
 
 		$category = '';
 		if ( strpos( $permalink, '%category%' ) !== false ) {
@@ -212,7 +211,9 @@
 			$author     = $authordata->user_nicename;
 		}
 
-		$date           = explode( ' ', gmdate( 'Y m d H i s', $unixtime ) );
+		// This is not an API call because in "sample" mode post might not be real post object.
+		$date = explode( ' ', str_replace( array( '-', ':' ), ' ', $post->post_date ) );
+
 		$rewritereplace =
 		array(
 			$date[0],
