CodeIgniter, руководство пользователя к версии 1.6.1


Хелпер Date

Хелпер Date содержит функции, помогающие работать с датами.

Загрузка хелпера

Для загрузки хелпера используется следующий код:

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

Доступны следующие функции:

now()

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

mdate()

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

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

$datestring = "Год: %Y Месяц: %m День: %d - %h:%i %a";
$time = time();

echo mdate($datestring, $time);

Если вторым параметром не указывается конкретное значение timestamp — используется текущее время.

standard_date()

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

$format = 'DATE_RFC822';
$time = time();

echo standard_date($format, $time);

Первый параметр должен задавать формат, второй — дату в виде Unix timestamp.

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

local_to_gmt()

Получает в качестве аргумента время в формате Unix timestamp и возвращает время по гринвичу. Пример:

$now = time();

$gmt = local_to_gmt($now);

gmt_to_local()

Получает в качестве аргумента время в формате Unix timestamp (приведенное к GMT) и конвертирует его в локальное время в зависимости от часового пояса и летнего/зимнего времени. Пример:

$timestamp = '1140153693';
$timezone = 'UM8';
$daylight_saving = TRUE;

echo gmt_to_local($timestamp, $timezone, $daylight_saving);

Примечание: Список часовых поясов приведен в конце данной страницы.

mysql_to_unix()

Получает в качестве параметра время в формате MySQL Timestamp и возвращает его в формате Unix. Пример:

$mysql = '20061124092345';

$unix = mysql_to_unix($mysql);

unix_to_human()

Получает в качестве параметра время в формате Unix timestamp и возвращает его в понятном человеку формате используя следующий шаблон:

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

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

Время может возвращаться с секундами или без них в Европейском формате или формате США. Если передано только время, оно будет возвращено без секунд в формате США. Примеры:

$now = time();

echo unix_to_human($now); // Время в формате США без секунд

echo unix_to_human($now, TRUE, 'us'); // Время в формате США с секундами

echo unix_to_human($now, TRUE, 'eu'); // Время в Европейском формате с секундами

human_to_unix()

Противоположна предыдущей функции. Получает в качестве параметра время в понятном человеку формате и возвращает его в формате Unix. Данная функция может быть полезной если вы обрабатываете понятные человеку даты, получаемые из формы. Возвращает FALSE в том случае, если дата на входе находится в формате, отличном от того, что был указан ранее. Пример:

$now = time();

$human = unix_to_human($now);

$unix = human_to_unix($human);

timespan()

Возвращает unix timestamp в таком виде:

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

Первый параметр должен содержать Unix timestamp. Второй — время, большее, чем то, что было указано в первом параметре. Если второй параметр пуст, будет использовано текущее время. Самый распространенный сценарий использования данной функции — показать, сколько времени прошло начиная с некоторого момента до текущего. Пример:

$post_date = '1079621429';
$now = time();

echo timespan($post_date, $now);

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

days_in_month()

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

echo days_in_month(06, 2005);

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

timezones()

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

echo timezones('UM5');

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

timezone_menu()

Возвращает выпадающий список часовых поясов:

Данное меню полезно, когда вы создаёте многопользовательский сайт, пользователи которого могут задать свой часовой пояс.

Первый параметр позволяет указать значение, выбранное по-умолчанию. К примеру, выставить тихоокеанское время в качестве значения по-умолчанию, вам необходимо будет использовать следующий код:

echo timezone_menu('UM8');

Список часовых поясов для данного меню см. далее.

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

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

Список часовых поясов

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

Часовой пояс Местоположение
UM12(UTC - 12:00) Enitwetok, Kwajalien
UM11(UTC - 11:00) Nome, Midway Island, Samoa
UM10(UTC - 10:00) Hawaii
UM9(UTC - 9:00) Alaska
UM8(UTC - 8:00) Pacific Time
UM7(UTC - 7:00) Mountain Time
UM6(UTC - 6:00) Central Time, Mexico City
UM5(UTC - 5:00) Eastern Time, Bogota, Lima, Quito
UM4(UTC - 4:00) Atlantic Time, Caracas, La Paz
UM25(UTC - 3:30) Newfoundland
UM3(UTC - 3:00) Brazil, Buenos Aires, Georgetown, Falkland Is.
UM2(UTC - 2:00) Mid-Atlantic, Ascention Is., St Helena
UM1(UTC - 1:00) Azores, Cape Verde Islands
UTC(UTC) Casablanca, Dublin, Edinburgh, London, Lisbon, Monrovia
UP1(UTC + 1:00) Berlin, Brussels, Copenhagen, Madrid, Paris, Rome
UP2(UTC + 2:00) Kaliningrad, South Africa, Warsaw
UP3(UTC + 3:00) Baghdad, Riyadh, Moscow, Nairobi
UP25(UTC + 3:30) Tehran
UP4(UTC + 4:00) Adu Dhabi, Baku, Muscat, Tbilisi
UP35(UTC + 4:30) Kabul
UP5(UTC + 5:00) Islamabad, Karachi, Tashkent
UP45(UTC + 5:30) Bombay, Calcutta, Madras, New Delhi
UP6(UTC + 6:00) Almaty, Colomba, Dhakra
UP7(UTC + 7:00) Bangkok, Hanoi, Jakarta
UP8(UTC + 8:00) Beijing, Hong Kong, Perth, Singapore, Taipei
UP9(UTC + 9:00) Osaka, Sapporo, Seoul, Tokyo, Yakutsk
UP85(UTC + 9:30) Adelaide, Darwin
UP10(UTC + 10:00) Melbourne, Papua New Guinea, Sydney, Vladivostok
UP11(UTC + 11:00) Magadan, New Caledonia, Solomon Islands
UP12(UTC + 12:00) Auckland, Wellington, Fiji, Marshall Island