Хелпер даты

Вспомогательный файл содержит функции, которые помогают при работе с датой.

Подключение хелпереа

This helper is loaded using the following code:

$this->load->helper('date');

Доступные функции

The following functions are available:

now([$timezone = NULL])
Параметры:
  • $timezone (строка) – Часовой пояс
Возвращает:

UNIX timestamp

Возвращаемый тип:

число

Возвращает текущее время как метку времени UNIX, на которую ссылается либо сервер местного времени либо любой поддерживаемый часовой пояс в PHP, основанный на настройке “time reference” в крнфигурационном файле. Если вы не собираетесь устанавливать эталонное время для любого из поддерживаемых часовых поясов PHP (что обычно делается при запуске сайта, когда есть возможность пользователю установить свои собственные настройки часового пояса) нет неообходимости в использовании этой функции вместо стандартной PHP функции time().

echo now('Australia/Victoria');

Если часовой пояс не указан, то он вернется на основании time() time_reference настройки.

mdate([$datestr = ''[, $time = '']])
Параметры:
  • $datestr (строка) – Строка содержащая дату
  • $time (число) – Временная метка UNIX
Возвращает:

MySQL формат даты

Возвращаемый тип:

строка

Эта функция идентична функции PHP date(), за исключением того, что позволяет использовать коды даты стиля MySQL, где каждый символ идет со знаком процента, например: %Y %m %d

Преимущество работать с датами таким образом - вы не должны переживать об экранировании любых символов, которые не являются кодами даты, как это следует делать в функции date().

Пример:

$datestring = 'Year: %Y Month: %m Day: %d - %h:%i %a';
$time = time();
echo mdate($datestring, $time);

Если временная метка не включена вторым параметром, то будет использовано текущее время.

standard_date([$fmt = 'DATE_RFC822'[, $time = NULL]])
Параметры:
  • $fmt (строка) – Строка содержащая дату
  • $time (число) – Временная метка UNIX
Возвращает:

Форматированная дата или FALSE если неверный формат

Возвращаемый тип:

строка

Позволяет создать строку даты в одном из нескольких стандартных форматов.

Пример:

$format = 'DATE_RFC822';
$time = time();
echo standard_date($format, $time);

Примечание

Эта функция УСТРАЛЕЛА. Используйте родную date() совмещенную с константами даты и времени:

echo date(DATE_RFC822, time());

Поддерживаемые форматы:

Константа Описание Пример
DATE_ATOM Atom 2005-08-15T16:13:03+0000
DATE_COOKIE HTTP Cookies Sun, 14 Aug 2005 16:13:03 UTC
DATE_ISO8601 ISO-8601 2005-08-14T16:13:03+00:00
DATE_RFC822 RFC 822 Sun, 14 Aug 05 16:13:03 UTC
DATE_RFC850 RFC 850 Sunday, 14-Aug-05 16:13:03 UTC
DATE_RFC1036 RFC 1036 Sunday, 14-Aug-05 16:13:03 UTC
DATE_RFC1123 RFC 1123 Sun, 14 Aug 2005 16:13:03 UTC
DATE_RFC2822 RFC 2822 Sun, 14 Aug 2005 16:13:03 +0000
DATE_RSS RSS Sun, 14 Aug 2005 16:13:03 UTC
DATE_W3C W3C 2005-08-14T16:13:03+0000
local_to_gmt([$time = ''])
Параметры:
  • $time (число) – Временная метка UNIX
Возвращает:

Временная метка UNIX

Возвращаемый тип:

число

Получает временную метку UNIX на вход и возвращает как GMT.

Пример:

$gmt = local_to_gmt(time());
gmt_to_local([$time = ''[, $timezone = 'UTC'[, $dst = FALSE]]])
Параметры:
  • $time (число) – Временная метка UNIX
  • $timezone (строка) – Часовой пояс
  • $dst (булев) – Действует ли летнее время
Возвращает:

Временная метка UNIX

Возвращаемый тип:

число

Принимает временную метку UNIX (на которую ссылается GMT) в качестве входных данных и преобразует ее в локализованная метку времени на основе установленного часового пояса и летнего времени.

Пример:

$timestamp = 1140153693;
$timezone  = 'UM8';
$daylight_saving = TRUE;
echo gmt_to_local($timestamp, $timezone, $daylight_saving);

Примечание

Список часовых поясов см. в ссылке внизу этой страницы.

mysql_to_unix([$time = ''])
Параметры:
  • $time (строка) – MySQL временная метка
Возвращает:

UNIX временная метка

Возвращаемый тип:

число

Принимает метку времени MySQL в качестве входных данных и возвращает ее в качестве метки времени UNIX.

Пример:

$unix = mysql_to_unix('20061124092345');
unix_to_human([$time = ''[, $seconds = FALSE[, $fmt = 'us']]])
Параметры:
  • $time (число) – Временная метка UNIX
  • $seconds (булев) – Показывать или нет секунды
  • $fmt (строка) – формат (us или euro)
Возвращает:

Форматированная дата

Возвращаемый тип:

строка

Принимает временную метку UNIX в качестве ввода и возвращает его в удобочитаемом формате с этим прототипом:

YYYY-MM-DD HH:MM:SS AM/PM

Полезно, когда необходимо отобразить дату в поле формы.

Время может быть отформатировано с секундами или без и может быть установлено в европейский или американский формат.

Примеры:

$now = time();
echo unix_to_human($now); // U.S. time, no seconds
echo unix_to_human($now, TRUE, 'us'); // U.S. time with seconds
echo unix_to_human($now, TRUE, 'eu'); // Euro time with seconds
human_to_unix([$datestr = ''])
Параметры:
  • $datestr (число) – Строка содержащая дату
Возвращает:

Метка Unix или FALSE в случае возникновения ошибки

Возвращаемый тип:

число

Противоположность функции unix_to_time(). Принимает "человеческое" время на вход и возвращает его как метку времени UNIX. Это полезно, если вы принимаете "человеческие" даты, отправленные через форму. Возвращает логическое значение FALSE, если переданная строка даты не отформатирована как указано выше.

Пример:

$now = time();
$human = unix_to_human($now);
$unix = human_to_unix($human);
nice_date([$bad_date = ''[, $format = FALSE]])
Параметры:
  • $bad_date (число) – Ужасно отформатированная строка даты
  • $format (строка) – Формат даты для возврата (аналог date())
Возвращает:

Форматированная дата

Возвращаемый тип:

строка

Эта функция может принимать плохо сформированный формат даты и конвертировать во что-то полезное. Также принимает хорошо сформированные даты.

По умолчанию функция возвращает метку времени UNIX. Вы можете опционально передать строку формата (аналогичные для функции PHP date()) вторым параметром.

Пример:

$bad_date = '199605';
// Должен производить: 1996-05-01
$better_date = nice_date($bad_date, 'Y-m-d');

$bad_date = '9-11-2001';
// Должен производить: 2001-09-11
$better_date = nice_date($bad_date, 'Y-m-d');

Примечание

Функция УСТАРЕВШАЯ. Лучше использовать DateTime класс PHP.

timespan([$seconds = 1[, $time = ''[, $units = '']]])
Параметры:
  • $seconds (число) – Количество секунд
  • $time (строка) – Временная метка UNIX
  • $units (число) – Количество отображаемых единиц времени
Возвращает:

Отформатирована разница во времени

Возвращаемый тип:

строка

Форматирует временную метку UNIX в похожее на это:

1 Year, 10 Months, 2 Weeks, 5 Days, 10 Hours, 16 Minutes

Первый параметр должен содержать метку времени UNIX. Второй параметр должен содержать метку времени большую, чем первая метка. Третий параметр является необязательным и ограничивает количество единиц времени для отображения.

Если второй параметр пуст, будет использоваться текущее время.

Наиболее распространенной целью этой функции является показать сколько времени прошло с какого-то момента.

Пример:

$post_date = '1079621429';
$now = time();
$units = 2;
echo timespan($post_date, $now, $units);

Примечание

Текст созданный этой функцией находится в языковом файле: language/<ваш_язык>/date_lang.php

days_in_month([$month = 0[, $year = '']])
Параметры:
  • $month (число) – число для месяца
  • $year (число) – число для года
Возвращает:

Количество дней в указанном месяце

Возвращаемый тип:

число

Возвращает количество дней в заданном месяце / году. Высокосные годы учитываются.

Пример:

echo days_in_month(06, 2005);

Если второй параметр пуст, будет использоваться текущий год.

Примечание

Эта функция псевдоним родной cal_days_in_month().

date_range([$unix_start = ''[, $mixed = ''[, $is_unix = TRUE[, $format = 'Y-m-d']]]])
Параметры:
  • $unix_start (число) – Метка времени Unix даты начала диапазона
  • $mixed (число) – Временная метка UNIX конечной даты или интервала диапазона в днях
  • $is_unix (булев) – значение FALSE, если параметр $mixed не является меткой времени
  • $format (строка) – Формат даты выхода, аналогично date()
Возвращает:

Массив с датами

Возвращаемый тип:

массив

Возвращает список дат в рамках указанного периода.

Пример:

$range = date_range('2012-01-01', '2012-01-15');
echo "First 15 days of 2012:";
foreach ($range as $date)
{
        echo $date."\n";
}
timezones([$tz = ''])
Параметры:
  • $tz (строка) – Числовой часовой пояс
Возвращает:

Разница в часах от UTC

Возвращаемый тип:

число

Принимает ссылку часового пояса (список допустимых часовых поясов см. "Ссылка на Часовой пояс" ниже) и возвращает количество часов смещения от UTC.

Пример:

echo timezones('UM5');

Эта функция полезна при использовании с timezone_menu().

timezone_menu([$default = 'UTC'[, $class = ''[, $name = 'timezones'[, $attributes = '']]]])
Параметры:
  • $default (строка) – Часовой пояс
  • $class (строка) – Имя класса
  • $name (строка) – Название меню
  • $attributes (mixed) – HTML атрибуты
Возвращает:

HTML выпадающее меню с часовыми поясами

Возвращаемый тип:

строка

Создает выпадающее меню часовых поясов как это:

Это меню полезно если вы запускаете сайт на котором ваши пользователи могут устанавливать локальное значение часового пояса.

Первый параметр позволяет задать состояние меню” selected". Например, чтобы установить Тихоокеанское время в качестве значения по умолчанию:

echo timezone_menu('UM8');

См. ссылку часового пояса ниже, чтобы увидеть значения этого меню.

Второй параметр позволяет задать имя класса CSS для меню.

Четвертый параметр позволяет задать один или несколько атрибутов для созданного тега select.

Примечание

Текст содержащийся в меню из языковго файла: language/<ваш_язык>/date_lang.php

Справка

В следующей таблице указывается каждый часовой пояс и его расположение.

Некоторые в списке были сокращенны для ясности и форматирования.

Часовой пояс Расположение
UM12 (UTC - 12:00) Baker/Howland Island
UM11 (UTC - 11:00) Samoa Time Zone, Niue
UM10 (UTC - 10:00) Hawaii-Aleutian Standard Time, Cook Islands
UM95 (UTC - 09:30) Marquesas Islands
UM9 (UTC - 09:00) Alaska Standard Time, Gambier Islands
UM8 (UTC - 08:00) Pacific Standard Time, Clipperton Island
UM7 (UTC - 07:00) Mountain Standard Time
UM6 (UTC - 06:00) Central Standard Time
UM5 (UTC - 05:00) Eastern Standard Time, Western Caribbean
UM45 (UTC - 04:30) Venezuelan Standard Time
UM4 (UTC - 04:00) Atlantic Standard Time, Eastern Caribbean
UM35 (UTC - 03:30) Newfoundland Standard Time
UM3 (UTC - 03:00) Argentina, Brazil, French Guiana, Uruguay
UM2 (UTC - 02:00) South Georgia/South Sandwich Islands
UM1 (UTC -1:00) Azores, Cape Verde Islands
UTC (UTC) Greenwich Mean Time, Western European Time
UP1 (UTC +1:00) Central European Time, West Africa Time
UP2 (UTC +2:00) Central Africa Time, Eastern European Time
UP3 (UTC +3:00) Moscow Time, East Africa Time
UP35 (UTC +3:30) Iran Standard Time
UP4 (UTC +4:00) Azerbaijan Standard Time, Samara Time
UP45 (UTC +4:30) Afghanistan
UP5 (UTC +5:00) Pakistan Standard Time, Yekaterinburg Time
UP55 (UTC +5:30) Indian Standard Time, Sri Lanka Time
UP575 (UTC +5:45) Nepal Time
UP6 (UTC +6:00) Bangladesh Standard Time, Bhutan Time, Omsk Time
UP65 (UTC +6:30) Cocos Islands, Myanmar
UP7 (UTC +7:00) Krasnoyarsk Time, Cambodia, Laos, Thailand, Vietnam
UP8 (UTC +8:00) Australian Western Standard Time, Beijing Time
UP875 (UTC +8:45) Australian Central Western Standard Time
UP9 (UTC +9:00) Japan Standard Time, Korea Standard Time, Yakutsk
UP95 (UTC +9:30) Australian Central Standard Time
UP10 (UTC +10:00) Australian Eastern Standard Time, Vladivostok Time
UP105 (UTC +10:30) Lord Howe Island
UP11 (UTC +11:00) Srednekolymsk Time, Solomon Islands, Vanuatu
UP115 (UTC +11:30) Norfolk Island
UP12 (UTC +12:00) Fiji, Gilbert Islands, Kamchatka, New Zealand
UP1275 (UTC +12:45) Chatham Islands Standard Time
UP13 (UTC +13:00) Phoenix Islands Time, Tonga
UP14 (UTC +14:00) Line Islands