Хелпер даты¶
Вспомогательный файл содержит функции, которые помогают при работе с датой.
Доступные функции¶
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()
.
Параметры: - $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 |