CodeIgniter User Guide Version 2.0.0


Помощник Date (дата)

Помощник Date содержит функции, которые помогут вам работать с датами.

Загрузка этого помощника

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

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

now()

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

mdate()

Эта функция, идентичная функции 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()

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

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

echo standard_date($format, $time);

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

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

Константа Описание Пример
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 World Wide Web Consortium 2005-08-14T16:13:03+0000

local_to_gmt()

Принимает Unix timestamp на вход и возвращает GMT. Пример:

$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 на входе и возвращает в человекочитаемом формате, в соответствии с этим прототипом:

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 в это:

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

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

$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/<your_lang>/date_lang.php

Справочник временных зон

Примечание переводчика. Мы перевели их в языковом файле CI 2.0.0, который теперь доступен по адресу http://codeigniter.com/wiki/Russian

Следующая таблица содержит временные зоны и их местонахождение.

Временная зона Местонахождение
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, Dhaka
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