WordPress как на ладони
wordpress jino

mysql2date() WP 0.71

Переводит дату из формата MySQL (Y-m-d H:i:s) в указанный формат. Формат указывается идентично функции date() в PHP.

Функция в отличии от date в PHP будет пытаться локализовать (перевести) месяц.

Работает на раннем этапе загрузки WordPress, еще до константы SHORTINIT.

Работает на основе: date_i18n()
✈ 1 раз = 0.00018с = быстро | 50000 раз = 4.42с = быстро

Хуков нет.

Возвращает

Строку. Дату в нужном формате.

Использование

mysql2date( $dateformatstring, $mysqlstring, $translate );
$dateformatstring(строка) (обязательный)
Формат даты который нам нужно получить. Например, написав j n Y получим: 25 12 2011. Примеры форматов.
По умолчанию: нет
$mysqlstring(строка) (обязательный)
Строка даты, которую нужно изменить. Строка из MySQL в формате (Y-m-d H:i:s).
По умолчанию: нет
$translate(логический)
true - функция будет пытаться переводить название месяцев, дней и т.п. на текущий язык установленный в WordPress (локализовать).
По умолчанию: true

Примеры

#1 Как работает функция

echo mysql2date('d.M.Y H:i', '2015-07-24 15:23:14'); // -> 24.Июл.2015 15:23

#2. Выведем дату публикации поста в формате d-m-Y:

echo mysql2date('d-m-Y', $post->post_date ); // -> 02-12-2011

Примеры форматов смотрите в описании comment_date().

Код mysql2date: wp-includes/functions.php WP 4.8.2

<?php
function mysql2date( $format, $date, $translate = true ) {
	if ( empty( $date ) )
		return false;

	if ( 'G' == $format )
		return strtotime( $date . ' +0000' );

	$i = strtotime( $date );

	if ( 'U' == $format )
		return $i;

	if ( $translate )
		return date_i18n( $format, $i );
	else
		return date( $format, $i );
}

Cвязанные функции

Из метки: date time (дата время)

Еще из раздела: Дата/время

mysql2date 2 комментария
  • GoliafRS cайт: goliafrs.ru

    Использую эту функцию для вывода даты побликации записей в своем блоге.

    <?php echo mysql2date('j F, H:i', $post->post_date, true); ?>

    Выводит примерно следующее:

    16 Август, 17:03

    Можно ли как подправить локализацию или написать собственную дополняющую функцию которая склонялы бы русские названия месяца?

    Ответитьгод назад #
    • Kama4464

      Вставь этот хук, он для всех функций дат будет срабатывать...

      add_filter('date_i18n', 'russify_months', 11, 2 );
      
      /**
       * Русифицирует месяца и недели в дате.
       * Функция для фильтра date_i18n.
       *
       * @param строка $date       Дата в принятом формате
       * @param строка $req_format Формат передаваемой даты
       * @return Дату   в русском формате
       */
      function russify_months( $date, $req_format ){
      	// в формате есть "строковые" неделя или месяц. выходим, если в формате есть экранированные символы
      	if( false !== strpos( $req_format, '\\') || ! preg_match('/[FMlS]/', $req_format ) )
      		return $date;
      
      	$replace = array (
      		'Январь'=>'января', 'Февраль'=>'февраля', 'Март'=>'марта', 'Апрель'=>'апреля', 'Май'=>'мая', 'Июнь'=>'июня', 'Июль'=>'июля', 'Август'=>'августа', 'Сентябрь'=>'сентября', 'Октябрь'=>'октября', 'Ноябрь'=>'ноября', 'Декабрь'=>'декабря',
      
      		'Янв'=>'янв.', 'Фев'=>'фев.', 'Мар'=>'март', 'Апр'=>'апр.', 'Май'=>'май', 'Июн'=>'июнь', 'Июл'=>'июль', 'Авг'=>'авг.', 'Сен'=>'сен.', 'Окт'=>'окт.', 'Ноя'=>'ноя.', 'Дек'=>'дек.',
      
      		'January'=>'января', 'February'=>'февраля', 'March'=>'марта', 'April'=>'апреля', 'May'=>'мая', 'June'=>'июня', 'July'=>'июля', 'August'=>'августа', 'September'=>'сентября', 'October'=>'октября', 'November'=>'ноября', 'December'=>'декабря',
      
      		'Jan'=>'янв.', 'Feb'=>'фев.', 'Mar'=>'март.', 'Apr'=>'апр.', 'May'=>'мая', 'Jun'=>'июня', 'Jul'=>'июля', 'Aug'=>'авг.', 'Sep'=>'сен.', 'Oct'=>'окт.', 'Nov'=>'нояб.', 'Dec'=>'дек.',
      
      		'Sunday'=>'воскресенье', 'Monday'=>'понедельник', 'Tuesday'=>'вторник', 'Wednesday'=>'среда', 'Thursday'=>'четверг', 'Friday'=>'пятница', 'Saturday'=>'суббота',
      
      		'Sun'=>'вос.', 'Mon'=>'пон.', 'Tue'=>'вт.', 'Wed'=>'ср.', 'Thu'=>'чет.', 'Fri'=>'пят.', 'Sat'=>'суб.', 'th'=>'', 'st'=>'', 'nd'=>'', 'rd'=>'',
      	);
      	$date = strtr( $date, $replace );
      
      	return $date;
      }
      Ответитьгод назад #

Здравствуйте, !

Ваш комментарий