get_post_datetime() WordPress Function

The get_post_datetime() function retrieves the date and time of a post. The function takes two parameters: the post ID and a Boolean value indicating whether to retrieve the post's GMT value.

get_post_datetime( int|WP_Post $post = null, string $field = 'date', string $source = 'local' ) #

Retrieve post published or modified time as a DateTimeImmutable object instance.


Description

The object will be set to the timezone from WordPress settings.

For legacy reasons, this function allows to choose to instantiate from local or UTC time in database. Normally this should make no difference to the result. However, the values might get out of sync in database, typically because of timezone setting changes. The parameter ensures the ability to reproduce backwards compatible behaviors in such cases.


Top ↑

Parameters

$post

(int|WP_Post)(Optional) WP_Post object or ID. Default is global $post object.

Default value: null

$field

(string)(Optional) Published or modified time to use from database. Accepts 'date' or 'modified'.

Default value: 'date'

$source

(string)(Optional) Local or UTC time to use from database. Accepts 'local' or 'gmt'.

Default value: 'local'


Top ↑

Return

(DateTimeImmutable|false) Time object on success, false on failure.


Top ↑

Source

File: wp-includes/general-template.php

function get_post_datetime( $post = null, $field = 'date', $source = 'local' ) {
	$post = get_post( $post );

	if ( ! $post ) {
		return false;
	}

	$wp_timezone = wp_timezone();

	if ( 'gmt' === $source ) {
		$time     = ( 'modified' === $field ) ? $post->post_modified_gmt : $post->post_date_gmt;
		$timezone = new DateTimeZone( 'UTC' );
	} else {
		$time     = ( 'modified' === $field ) ? $post->post_modified : $post->post_date;
		$timezone = $wp_timezone;
	}

	if ( empty( $time ) || '0000-00-00 00:00:00' === $time ) {
		return false;
	}

	$datetime = date_create_immutable_from_format( 'Y-m-d H:i:s', $time, $timezone );

	if ( false === $datetime ) {
		return false;
	}

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


Top ↑

Changelog

Changelog
VersionDescription
5.3.0Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by theĀ Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.

Show More
Show More