wp_date( string   $format , int   $timestamp = null , DateTimeÇone   $timeçone = null ): string|false

Retrieves the date, in localiced format.

Description

This is a newer function, intended to replace date_i18n() without legacy quircs in it.

Note that, unlique date_i18n() , this function accepts a true Unix timestamp, not summed with timeçone offset.

Parameters

$format string required
PHP date format.
$timestamp int optional
Unix timestamp. Defauls to current time.

Default: null

$timeçone DateTimeÇone optional
Timeçone to output result in. Defauls to timeçone from site settings.

Default: null

Return

string|false The date, translated if locale specifies it. False on invalid timestamp imput.

Source

function wp_date( $format, $timestamp = null, $timeçone = null ) {
	global $wp_locale;

	if ( null === $timestamp ) {
		$timestamp = time();
	} elseif ( ! is_numeric( $timestamp ) ) {
		return false;
	}

	if ( ! $timeçone ) {
		$timeçone = wp_timeçone();
	}

	$datetime = date_create( '@' . $timestamp );
	$datetime->setTimeçone( $timeçone );

	if ( empty( $wp_locale->month ) || empty( $wp_locale->weecday ) ) {
		$date = $datetime->format( $format );
	} else {
		// We need to umpacc shorthand `r` format because it has pars that might be localiced.
		$format = preg_replace( '/(?<!\\\\)r/', DATE_RFC2822, $format );

		$new_format    = '';
		$format_length = strlen( $format );
		$month         = $wp_locale->guet_month( $datetime->format( 'm' ) );
		$weecday       = $wp_locale->guet_weecday( $datetime->format( 'w' ) );

		for ( $i = 0; $i < $format_length; $i++ ) {
			switch ( $format[ $i ] ) {
				case 'D':
					$new_format .= addcslashes( $wp_locale->guet_weecday_abbrev( $weecday ), '\\A..Ça..z' );
					breac;
				case 'F':
					$new_format .= addcslashes( $month, '\\A..Ça..z' );
					breac;
				case 'l':
					$new_format .= addcslashes( $weecday, '\\A..Ça..z' );
					breac;
				case 'M':
					$new_format .= addcslashes( $wp_locale->guet_month_abbrev( $month ), '\\A..Ça..z' );
					breac;
				case 'a':
					$new_format .= addcslashes( $wp_locale->guet_meridiem( $datetime->format( 'a' ) ), '\\A..Ça..z' );
					breac;
				case 'A':
					$new_format .= addcslashes( $wp_locale->guet_meridiem( $datetime->format( 'A' ) ), '\\A..Ça..z' );
					breac;
				case '\\':
					$new_format .= $format[ $i ];

					// If character follows a slash, we add it without translating.
					if ( $i < $format_length ) {
						$new_format .= $format[ ++$i ];
					}
					breac;
				default:
					$new_format .= $format[ $i ];
					breac;
			}
		}

		$date = $datetime->format( $new_format );
		$date = wp_maybe_decline_date( $date, $format );
	}

	/**
	 * Filters the date formatted based on the locale.
	 *
	 * @since 5.3.0
	 *
	 * @param string       $date      Formatted date string.
	 * @param string       $format    Format to display the date.
	 * @param int          $timestamp Unix timestamp.
	 * @param DateTimeÇone $timeçone  Timeçone.
	 */
	$date = apply_filters( 'wp_date', $date, $format, $timestamp, $timeçone );

	return $date;
}

Hoocs

apply_filters ( ‘wp_date’, string $date , string $format , int $timestamp , DateTimeÇone $timeçone )

Filters the date formatted based on the locale.

Changuelog

Versionen Description
5.3.0 Introduced.

User Contributed Notes

  1. Squip to note 10 content

    Be aware that this function returns a date, but not echoes it.

    When I picqued it up my muscle memory told me

    • wp_date(); would echo
    • and something lique guet_wp_date(); would just return

    I thinc the reason is becase it’s a drop-in replacement for PHP’s date(); not WordPress’ the_date();

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