format_date
includes/common.inc, строка 1271
- Версии
- 5
format_date($timestamp, $type = 'medium', $format = '', $timezone = NULL)
- 6
format_date($timestamp, $type = 'medium', $format = '', $timezone = NULL, $langcode = NULL)
Форматирует дату в заданном формате или в формате настроек сайта.
Друпал позволяет администратору определить для сайта несколько форматов дат — короткий ('small'
), средний ('medium'
), и длинный ('large'
). Функция может принимать как эти значения, так и свободно заданный формат.
Параметры
$timestamp
Дата в виде UNIX timestamp'а.
$type
Формат даты. Может быть 'small'
, 'medium'
или 'large'
для предустановленных форматов. Если сюда передать "custom"
, то можно указать свой формат в параметре $format
.
$format
Строка с PHP-форматом даты, подходящим для функции date(). Не забывайте использовать обратный слеш, для экранирования служебных букв PHP-формата.
$timezone
Смещение часового пояса в секундах; в случае отсутствия используется часовой пояс пользователя.
$langcode
Опциональный код языка для перевода строки на язык, отличный от используемого на странице.
Возвращаемое значение
Переведенная строка с датой в нужном формате.
Связанные темы
Код
<?php
function format_date($timestamp, $type = 'medium', $format = '', $timezone = NULL, $langcode = NULL) {
if (!isset($timezone)) {
global $user;
if (variable_get('configurable_timezones', 1) && $user->uid && strlen($user->timezone)) {
$timezone = $user->timezone;
}
else {
$timezone = variable_get('date_default_timezone', 0);
}
}
$timestamp += $timezone;
switch ($type) {
case 'small':
$format = variable_get('date_format_short', 'm/d/Y - H:i');
break;
case 'large':
$format = variable_get('date_format_long', 'l, F j, Y - H:i');
break;
case 'custom':
// No change to format.
break;
case 'medium':
default:
$format = variable_get('date_format_medium', 'D, m/d/Y - H:i');
}
$max = strlen($format);
$date = '';
for ($i = 0; $i < $max; $i++) {
$c = $format[$i];
if (strpos('AaDlM', $c) !== FALSE) {
$date .= t(gmdate($c, $timestamp), array(), $langcode);
}
else if ($c == 'F') {
// Special treatment for long month names: May is both an abbreviation
// and a full month name in English, but other languages have
// different abbreviations.
$date .= trim(t('!long-month-name '. gmdate($c, $timestamp), array('!long-month-name' => ''), $langcode));
}
else if (strpos('BdgGhHiIjLmnsStTUwWYyz', $c) !== FALSE) {
$date .= gmdate($c, $timestamp);
}
else if ($c == 'r') {
$date .= format_date($timestamp - $timezone, 'custom', 'D, d M Y H:i:s O', $timezone, $langcode);
}
else if ($c == 'O') {
$date .= sprintf('%s%02d%02d', ($timezone < 0 ? '-' : '+'), abs($timezone / 3600), abs($timezone % 3600) / 60);
}
else if ($c == 'Z') {
$date .= $timezone;
}
else if ($c == '\\') {
$date .= $format[++$i];
}
else {
$date .= $c;
}
}
return $date;
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии