Учебник РНР (перевод Alexandr Pyramidin) Размещено на PHPClub.Net
Назад Вперёд

date

(PHP 3, PHP 4 )

date - формат локального времени/даты.

Описание

string date ( string format [, int timestamp])

Возвращает строку, отформатированную в соответствии со строкой формата с использованием заданного целочисленного timestamp или текущего локального времени, если timestamp/"штамп времени" не задан.

Примечание: Правильный диапазон значений для timestamp обычно: с Fri, 13 Dec 1901 20:45:54 GMT до Tue, 19 Jan 2038 03:14:07 GMT. (Это даты, соответствующие максимальному и минимальному значениям 32-битного целого числа). В windows этот диапазон ограничен датами от 01-01-1970 до 19-01-2038.

Для генерации timestamp из строки, представляющей дату, вы можете использовать strtotime(). Кроме того, некоторые базы данных имеют функции для конвертации их форматов даты в timestamp'ы (такие как функция MySQL'а UNIX_TIMESTAMP).

В строке формата распознаются следующие символы:

  • a - "am" или "pm"
  • A - "AM" ил "PM"
  • B - время Swatch Internet
  • d - день (число) месяца, 2 цифры с ведущим нулём, если необходимо; т. е от "01" до "31"
  • D - день недели, буквенный, 3 буквы; например, "Fri"
  • F - месяц, буквенный, long; например, "January"
  • g - час, 12-часовой формат без ведущих нулей; т.е. от "1" до "12"
  • G - час, 24-часовой формат без ведущих нулей; т.е. от "0" до "23"
  • h - час, 12-часовой формат; т.е. от "01" до "12"
  • H - час, 24-часовой формат; т.е. от "00" до "23"
  • i - минуты; т.е. от "00" до "59"
  • I (заглавная i) - "1", если Daylight Savings Time, "0" - в противном случае.
  • j - день (число) месяца без ведущих нулей; т.е. от "1" до "31"
  • l ('L' в нижнем регистре) - день недели, буквенный, long; например, "Friday"
  • L - boolean, указывающее, високосный ли год; т.е. "0" или "1"
  • m - месяц; т.е. от "01" до "12"
  • M - месяц, буквенный, 3 буквы; например, "Jan"
  • n - месяц без ведущих нулей; т.е. "1" to "12"
  • O - Разница с временем по Гринвичу, в часах; например, "+0200"
  • r - RFC 822 формат даты; например, "Thu, 21 Dec 2000 16:01:07 +0200" (введён в PHP 4.0.4)
  • s - секунды; т.е. от "00" до "59"
  • S - простой английский суффикс для дня (числа) месяца, 2 символа; т.е. "st", "nd", "rd" или "th"
  • t - количество дней в данном месяце; т.е. от "28" до "31"
  • T - установка Timezone/Часовой пояс на данной машине; например, "EST" или "MDT"
  • U - секунды эпохи Unix Epoch (начиная с January 1 1970 00:00:00 GMT)
  • w - день недели, числовой, т.е. от "0" (Sunday) до "6" (Saturday)
  • W - ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0)
  • Y - год, 4 цифры; например, "1999"
  • y - год, 2 цифры; например, "99"
  • z - день года; т.е. от "0" до "365"
  • Z - смещение часового пояса, в секундах (т.е. от "-43200" до "43200"). Смещение часовых поясов к западу от UTC всегда отрицательное, а для поясов в востоку от UTC - всегда положительное.
Нераспознаваемые символы в строке формата печатаются как есть. Формат "Z" всегда возвращает "0" при использовании gmdate().

Пример 1. date()

echo date ("l dS of F Y h:i:s A");
echo "July 1, 2000 is on a " . date ("l", mktime(0,0,0,7,1,2000));

Вы можете предотвратить развёртывание распознаваемого символа в строке формата, escap-ируя (заменяя) его вставкой перед ним обратного слэша (\). Если символ с обратным слэшем уже является специальной последовательностью, вам может понадобиться также escape-ировать и обратный слэш.

Пример 2. Escap-ирование символов в date()

echo date("l \\t\h\e jS"); // печатает что-нибудь вроде 'Saturday the 8th'

Имеется возможность совместного использования date() и mktime() для поиска дат в будущем или в прошлом.

Пример 3. date() и mktime()

$tomorrow  = mktime (0,0,0,date("m")  ,date("d")+1,date("Y"));
$lastmonth = mktime (0,0,0,date("m")-1,date("d"),  date("Y"));
$nextyear  = mktime (0,0,0,date("m"),  date("d"),  date("Y")+1);

Примечание: Это может оказаться более надёжным, чем просто добавление или вычитание числа секунд из дня или месяца, в timestamp, из-за использования перехода на летнее время.

Далее идут некоторые примеры форматирования date(). Заметьте, что вы должны escape-ировать любые другие символы, так как те из них, которые имеют в настоящее время специальное значение, будут давать нежелательный результат, а другие символы могут получить особое значение в будущих версиях PHP. При escap-ировании убедитесь в использовании одинарных кавычек для предотвращения использования символов вроде \n как символов новой строки/newlines.

Пример 4. Форматирование date()

/* Сегодня March 10th, 2001, 5:16:18 pm */
$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day z ');  // 05-16-17, 10-03-01, 1631 1618 6 Fripm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // Это 10-е число.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 15:16:08 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:17 m это месяц
$today = date("H:i:s");                         // 17:16:17

Для форматирования дат на других языках вы должны использовать функции setlocale() и strftime().

См. также getlastmod(), gmdate(), mktime(), strftime() и time().


НазадОглавление Вперёд
checkdateВверх getdate