date_i18n

Definition:
function date_i18n( $dateformatstring, $unixtimestamp = false, $gmt = false ) {}

Retrieve the date in localized format, based on timestamp.
If the locale specifies the locale month and weekday, then the locale will take over the format for the date. If it isn’t, then the date format string will be used instead.

Parameters

  • string $dateformatstring: Format to display the date.
  • int $unixtimestamp: Optional. Unix timestamp.
  • bool $gmt: Optional, default is false. Whether to convert to GMT for time.

Return values

returns:The date, translated if locale specifies it.

Defined filters

  • date_i18n
    apply_filters('date_i18n', $j, $req_format, $i, $gmt)

Source code

function date_i18n( $dateformatstring, $unixtimestamp = false, $gmt = false ) {

	global $wp_locale;

	$i = $unixtimestamp;



	if ( false === $i ) {

		if ( ! $gmt )

			$i = current_time( 'timestamp' );

		else

			$i = time();

		// we should not let date() interfere with our

		// specially computed timestamp

		$gmt = true;

	}



	// store original value for language with untypical grammars

	// see http://core.trac.wordpress.org/ticket/9396

	$req_format = $dateformatstring;



	$datefunc = $gmt? 'gmdate' : 'date';



	if ( ( !empty( $wp_locale->month ) ) && ( !empty( $wp_locale->weekday ) ) ) {

		$datemonth = $wp_locale->get_month( $datefunc( 'm', $i ) );

		$datemonth_abbrev = $wp_locale->get_month_abbrev( $datemonth );

		$dateweekday = $wp_locale->get_weekday( $datefunc( 'w', $i ) );

		$dateweekday_abbrev = $wp_locale->get_weekday_abbrev( $dateweekday );

		$datemeridiem = $wp_locale->get_meridiem( $datefunc( 'a', $i ) );

		$datemeridiem_capital = $wp_locale->get_meridiem( $datefunc( 'A', $i ) );

		$dateformatstring = ' '.$dateformatstring;

		$dateformatstring = preg_replace( "/([^\\\])D/", "\\1" . backslashit( $dateweekday_abbrev ), $dateformatstring );

		$dateformatstring = preg_replace( "/([^\\\])F/", "\\1" . backslashit( $datemonth ), $dateformatstring );

		$dateformatstring = preg_replace( "/([^\\\])l/", "\\1" . backslashit( $dateweekday ), $dateformatstring );

		$dateformatstring = preg_replace( "/([^\\\])M/", "\\1" . backslashit( $datemonth_abbrev ), $dateformatstring );

		$dateformatstring = preg_replace( "/([^\\\])a/", "\\1" . backslashit( $datemeridiem ), $dateformatstring );

		$dateformatstring = preg_replace( "/([^\\\])A/", "\\1" . backslashit( $datemeridiem_capital ), $dateformatstring );



		$dateformatstring = substr( $dateformatstring, 1, strlen( $dateformatstring ) -1 );

	}

	$timezone_formats = array( 'P', 'I', 'O', 'T', 'Z', 'e' );

	$timezone_formats_re = implode( '|', $timezone_formats );

	if ( preg_match( "/$timezone_formats_re/", $dateformatstring ) ) {

		$timezone_string = get_option( 'timezone_string' );

		if ( $timezone_string ) {

			$timezone_object = timezone_open( $timezone_string );

			$date_object = date_create( null, $timezone_object );

			foreach( $timezone_formats as $timezone_format ) {

				if ( false !== strpos( $dateformatstring, $timezone_format ) ) {

					$formatted = date_format( $date_object, $timezone_format );

					$dateformatstring = ' '.$dateformatstring;

					$dateformatstring = preg_replace( "/([^\\\])$timezone_format/", "\\1" . backslashit( $formatted ), $dateformatstring );

					$dateformatstring = substr( $dateformatstring, 1, strlen( $dateformatstring ) -1 );

				}

			}

		}

	}

	$j = @$datefunc( $dateformatstring, $i );

	// allow plugins to redo this entirely for languages with untypical grammars

	$j = apply_filters('date_i18n', $j, $req_format, $i, $gmt);

	return $j;

}

762

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: