Date/Time: Remove `mysql2date()` usage in `get_feed_build_date()` to ensure the output includes correct timezone offset.
With the changes in [45908], `mysql2date()` works correctly for all local time inputs, but should not be used for UTC time inputs. Add a unit test. Props Rarst, lisota. Fixes #48675. git-svn-id: https://develop.svn.wordpress.org/trunk@46756 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
065a181fc0
commit
6ce8175456
|
@ -682,7 +682,13 @@ function get_feed_build_date( $format ) {
|
|||
}
|
||||
|
||||
// Determine the maximum modified time.
|
||||
$max_modified_time = mysql2date( $format, max( $modified_times ), false );
|
||||
$datetime = date_create_immutable_from_format(
|
||||
'Y-m-d h:i:s',
|
||||
max( $modified_times ),
|
||||
new DateTimeZone( 'UTC' )
|
||||
);
|
||||
|
||||
$max_modified_time = $datetime->format( $format );
|
||||
|
||||
/**
|
||||
* Filters the date the last post or comment in the query was modified.
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @group date
|
||||
* @group datetime
|
||||
*/
|
||||
class Tests_Date_Get_Feed_Build_Date extends WP_UnitTestCase {
|
||||
|
||||
function tearDown() {
|
||||
global $wp_query;
|
||||
|
||||
update_option( 'timezone_string', 'UTC' );
|
||||
|
||||
unset( $wp_query );
|
||||
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 48675
|
||||
*/
|
||||
public function test_should_return_correct_feed_build_date() {
|
||||
global $wp_query;
|
||||
|
||||
$timezone = 'America/Chicago';
|
||||
update_option( 'timezone_string', $timezone );
|
||||
|
||||
$post_id = self::factory()->post->create(
|
||||
array(
|
||||
'post_date' => '2018-07-22 21:13:23',
|
||||
'post_date_gmt' => '2018-07-23 03:13:23',
|
||||
)
|
||||
);
|
||||
|
||||
$wp_query = new WP_Query( array( 'p' => $post_id ) );
|
||||
|
||||
$this->assertEquals( '2018-07-23T03:13:23+00:00', get_feed_build_date( DATE_RFC3339 ) );
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue