Хелпер 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.
Поддерживаемые форматы:
- DATE_ATOM
- DATE_COOKIE
- DATE_ISO8601
- DATE_RFC822
- DATE_RFC850
- DATE_RFC1036
- DATE_RFC1123
- DATE_RFC2822
- DATE_RSS
- DATE_W3C
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 |