wp_date() WP 5.3.0

Отримує локалізовану дату (перекладену поточною мовою) з переданої мітки часу unix.

Ця функція є обгорткою для функції PHP date() .

Якщо у виведеній даті використовується формат із місяцем або тижнем у вигляді рядка, то функція спробує перевести їх на поточну мову. В інших випадках – це аналог date() у PHP.

Це нова функція, призначена для заміни date_i18n() .

Цій функції, на відміну від date_i18n() , потрібно передавати мітку часу Unix, без додавання до неї зсуву часової зони сайту.

Зсув тимчасової зони додається автоматично всередині функції на основі третього параметра $timezone , в якому можна вказати довільне зсув тимчасової зони.

У зв’язку із запровадженням у версії 5.3 нового API для роботи з часом:

Не рекомендується:

Рекомендується:

  • Отримуйте час як Unix timestamp(мітка часу Unix без зсуву) або як об’єкт DateTimeImmutable :

  • Локалізуйте час/дату, базуючись на Unix timestamp:

  • Зберігайте Unix timestampsабо формати, які точно вказують час, наприклад DATE_RFC3339 .

  • Порівнюйте мітки часу Unix, DateTimeImmutable об’єкти або строкові дати в єдиній часовій зоні.

  • Використовуйте об’єкти: DateTimeZone та DateTimeImmutable з функцією wp_date(), коли потрібно обробити час у часовій зоні, яка відрізняється від зони сайту).
Працює на основі:
WP_Locale() ,
wp_timezone()
Основа для:
date_i18n() ,
mysql2date()

Хуки з функції

Повертає

Строку|false. Перекладена дата. False коли введено неправильну мітку часу.

Використання

wp_date($format, $timestamp, $timezone);
$format
(рядок) (обов’язковий)
Формат у якому виводитиме дату, приклад:
F j, Y– Листопад 6, 2010.
Повний список форматів . Як формат можна використовувати опцію
get_option( ‘date_format’ ) , яка задається в розділі “Налаштування”.
$timestamp
(число)
Мітка часу Unix, з якої буде отримана дата у вказаному форматі. За промовчанням використовується поточна позначка
time() .


За замовчуванням: null – (time() – current UNIX time)
$timezone
(DateTimeZone)
Тимчасова зона, яка буде накладена на вказану позначку часу. За промовчанням
wp_timezone() .


За замовчуванням: null (поточна часова зона з опцій сайту)

Приклади

0

#1 Локалізація php функції date() у WordPress

Поточний час:

$format = 'j FYH:i:s';

echo wp_date($format); // 24 березня 2021 08:12:07 (час сайту = +5 годин)
echo date_i18n($format); // 24 березня 2021 08:12:07 (час сайту = +5 годин)
echo date($format); // 24 March 2021 03:12:07 (UTC час)

Вказаний час:

echo wp_date( 'j FYH:i:s', 0 );
// 1 січня 1970 06:00:00

echo wp_date( 'j MYH:i:s', strtotime('1999-11-15') );
// 15 Лис 1999 05:00:00 (час сайту = +5 годин)

echo wp_date( 'j MYH:i:s', strtotime('1999-11-15'), new DateTimeZone('UTC') );
// 15 Лис 1999 00:00:00 (UTC час)

нотатки

  • Global. WP_Locale. $wp_locale WordPress date and time locale object.

список змін

З версії 5.3.0Введено.

Код wp_date() WP 6.0.2

function wp_date( $format, $timestamp = null, $timezone = null ) {
	global $wp_locale;

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

	if (! $timezone) {
		$timezone = wp_timezone();
	}

	$datetime = date_create( '@' . $timestamp );
	$datetime->setTimezone( $timezone );

	if ( empty( $wp_locale->month ) || empty( $wp_locale->weekday ) ) {
		$date = $datetime->format($format);
	} else {
		// Для потреби в пакеті shorthand `r` format because it has parts that might be localized.
		$format = preg_replace( '/(?<!)r/', DATE_RFC2822, $format );

		$new_format = '';
		$format_length = strlen($format);
		$month = $wp_locale->get_month( $datetime->format( 'm' ) );
		$weekday = $wp_locale->get_weekday( $datetime->format( 'w' ) );

		for ( $i = 0; $i < $format_length; $i ++ ) {
			switch ($format[$i]) {
				case 'D':
					$new_format .= addcslashes( $wp_locale->get_weekday_abbrev( $weekday ), 'A..Za..z' );
					break;
				case 'F':
					$new_format .= addcslashes( $month, 'A..Za..z' );
					break;
				case 'l':
					$new_format .= addcslashes( $weekday, 'A..Za..z' );
					break;
				case 'M':
					$new_format .= addcslashes( $wp_locale->get_month_abbrev( $month ), 'A..Za..z' );
					break;
				case 'a':
					$new_format .= addcslashes( $wp_locale->get_meridiem( $datetime->format( 'a' ) ), 'A..Za..z' );
					break;
				case 'A':
					$new_format .= addcslashes( $wp_locale->get_meridiem( $datetime->format( 'A' ) ), 'A..Za..z' );
					break;
				case '':
					$new_format .= $format[$i];

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

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

	/**
	 * Filters 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 DateTimeZone $timezone Timezone.
	 */
	$date = apply_filters( 'wp_date', $date, $format, $timestamp, $timezone);

	return $date;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *