PHP Дата и Время – используем ООП для работы с датой и временем


Содержание

Функции для работы с датой и временем

Эти функции позволяют получить дату и время на сервере, где выполняется PHP скрипт. Используя эти функции, дату и время можно представить в различных форматах.

Замечание: Обратите внимание, что работа этих функций зависит от текущей локали на сервере. Также следует принимать во внимание летнее время и високосные годы.

Эти функции всегда доступны.

Для использования этих функций не требуется проведение установки, поскольку они являются частью ядра PHP.

Данное расширение не определяет никакие директивы конфигурации в php.ini .

Данное расширение не определяет никакие типы ресурсов.

Данное расширение не определяет никакие константы.

PHP5 Дата и время

Функция PHP date(), используется для форматирования даты и/или времени.

PHP Функция date()

Функция date() , форматирует метку времени для более читаемых даты и времени.

Синтаксис

Параметры Описание
Формат Обязательно. Задает формат метки времени
Метка времени Необязательно. Задает метку времени. По умолчанию — текущая дата и время

Временная метка — это последовательность символов, обозначающие дату и/или время, когда произошло определенное событие.

PHP Получить простую дату

Необходимый параметр формат функции date() определяет, как форматировать дату (или время).

Вот некоторые символы, которые обычно используются для дат:

  • d — Представляет день месяца (01 до 31)
  • m — Представляет месяц (01 до 12)
  • Y — Представляет год (из четырех цифрах)
  • l — Представляет день недели

Другие персонажи, например «/» , «.» , или «-» также могут быть вставлены между символами для добавления дополнительного форматирования.

Пример ниже, форматирует сегодняшнюю дату тремя различными способами:

Пример

PHP Год авторского права

Функция date() , автоматического обновления года авторского права вебсайта:

Пример

PHP Получить простое время

Вот некоторые символы, которые обычно используются для времени:

  • h — 12-часовой формат с ведущими нулями (01 до 12)
  • i — Минуты с ведущими нулями (00 до 59)
  • s — Секунды с ведущими нулями (00 до 59)
  • a — В нижнем регистре до полудня и после полудня (am и pm)

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

Пример

Обратите внимание, что PHP функция date() вернет текущую дату/время сервера!

PHP Получить свой часовой пояс

Если время, которое вы получили от кода не является правильным время, это, вероятно, потому, что ваш сервер находится в другой стране или настроить для другой часовой пояс.

Так, если вам нужно чтобы время было правильным согласно специфическому местоположению, можно использовать установку часового пояса.

В примере ниже задается часовой пояс «Россия/Пермь», затем, выводит текущее время в указанном формате:

Пример

PHP Создать метку времени

Необязательный параметр timestamp в функции date() задает метку времени. Если Вы не укажите метку времени, будет использоваться текущая дата и время (как показано в примеры выше).

Функция mktime() возвращает метку времени Unix для даты. Временная метка Unix содержит количество секунд между эпохой Unix (1 января 1970 00:00:00 GMT) и время уточняется.

Синтаксис

Пример ниже создает дату и время из нескольких параметров в функции mktime() :

Пример

PHP Создать дату из строки

Функция strtotime() , используется для преобразования читаемой строки в времени Unix.

Синтаксис

Пример ниже создает дату и время из функции strtotime() :

Пример

PHP довольно грамотно преобразовывает строку в дату, так что можно вставить в различные значения:

Пример

Однако, функция strtotime() не идеалена, поэтому не забудьте проверить строки, которые вы туда вставили.

Еще примеры дат


В приведенном ниже примере, выводятся даты для следующих шести суббот:

Пример

Пример ниже выводит количество дней до 4 июля:

Пример

PHP Полный справочник дат

Для полной справки всех функций даты, пройдите к нашему полному PHP Справочик дат.

Справочник содержит краткое описание и примеры использования для каждого функция!

Текущая дата и время в php

Получим текущую дату.

В вышеприведенном примере дата будет выводиться числами в формате дд/мм/гг. В данной статье мы рассмотрим то, как выводить время и дату в любом удобном для вас формате.

Функция date предназначена как для выведения времени и даты, так и преобразования временной метки в нужный формат. Метка представляет собой количество секунд, которые прошли с даты основания linux. Для получения данного числа существует функция time (), а наличие временной метки в date необязательно.

Для выведения даты в нужном вам формате вы можете воспользоваться модификаторами, приведенными в первом параметре.

Параметр Описание Что возвращает a нижний регистр, выведение am или pm «am» или «pm» A верхний регистр, выведение AM или PM «AM» или «PM» d текущий день, 2 цифры с первым 0 «01»-«31» F Полное название месяца «February» g 12-часовой формат времени, 0 в начале отсутствует «1» до «12» G 24-часовой формат времени, с отсутствием в начале 0 «0»-«24» h часы, 12-часовой формат, первый ноль. «01»-«12» H часы, 24-часовой формат, первый ноль. «00» до «24» i минуты «00»-«59» I 1 (день) и 0 (ночь) «1»,»0″ j текущий день, 2 цифры без 0 в начале «1»-«31» l Полное название текстом текущего дня недели «Monday» L 1 — если високосный год, в других случаях ноль «1»-0″ m Месяц с 0 в начале «01»-12″ M Первые три буквы названия текущего месяца “Feb” n месяц (без нуля в начале) «1»- «12» r вывод времени и даты в формате RFC 822 «Thu, 21 Dec 2000 16:01:07 +0200» s секунды. «00» до «59» S Английское окончание «th» или «nd» t Число дней в месяце «28»-«31» T Часовой пояс «MDT» U Число секунд с начала века «999869506» w День недели по счету «0»(вс)-«6″(сб) Y Год в виде 4 цифр «2015» y Год в виде 2 цифр «15» z день в году «0»-«365» Z часовой пояс от Гринвича, выраженный в секундах (положительная для востока, отрицательная для запада) «-43200» — «43200»

Неуказанные в таблице цифры, буквы и символы будут выводиться в том виде, в котором они есть.

Выведет Tuesday 04th of September 2001 05:1:28 PM
Обратите внимание на ds = 04th , d -день и s — окончание

Также вы можете присвоить функцию элементу массива или переменной.

Получим: Текущее время: 18:32:17 и дата: 12.03.15

При необходимости вывода зарезервированных символов, состоящих из параметров, поставьте перед буквами \.

date — Форматирует вывод системной даты/времени

(PHP 4, PHP 5, PHP 7)

date — Форматирует вывод системной даты/времени

Описание

Возвращает строку, отформатированную в соответствии с указанным шаблоном format . Используется метка времени, заданная аргументом timestamp , или текущее системное время, если timestamp не задан. Таким образом, timestamp является необязательным и по умолчанию равен значению, возвращаемому функцией time() .

Список параметров

Шаблон результирующей строки ( string ) с датой. См. параметры форматирования ниже. Также существует несколько предопределенных констант даты/времени, которые могут быть использованы вместо этих параметров. Например: DATE_RSS заменяет шаблон ‘D, d M Y H:i:s’.

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

Символ в строке format Описание Пример возвращаемого значения
День
d День месяца, 2 цифры с ведущим нулём от 01 до 31
D Текстовое представление дня недели, 3 символа от Mon до Sun
j День месяца без ведущего нуля от 1 до 31
l (строчная ‘L’) Полное наименование дня недели от Sunday до Saturday
N Порядковый номер дня недели в соответствии со стандартом ISO-8601 (добавлен в версии PHP 5.1.0) от 1 (понедельник) до 7 (воскресенье)
S Английский суффикс порядкового числительного дня месяца, 2 символа st, nd, rd или th. Применяется совместно с j
w Порядковый номер дня недели от (воскресенье) до 6 (суббота)
z Порядковый номер дня в году (начиная с 0) От до 365
Неделя
W Порядковый номер недели года в соответствии со стандартом ISO-8601; недели начинаются с понедельника (добавлено в версии PHP 4.1.0) Например: 42 (42-я неделя года)
Месяц
F Полное наименование месяца, например January или March от January до December
m Порядковый номер месяца с ведущим нулём от 01 до 12
M Сокращенное наименование месяца, 3 символа от Jan до Dec
n Порядковый номер месяца без ведущего нуля от 1 до 12
t Количество дней в указанном месяце от 28 до 31
Год
L Признак високосного года 1, если год високосный, иначе .
o Номер года в соответствии со стандартом ISO-8601. Имеет то же значение, что и Y, кроме случая, когда номер недели ISO (W) принадлежит предыдущему или следующему году; тогда будет использован год этой недели. (добавлен в версии PHP 5.1.0) Примеры: 1999 или 2003
Y Порядковый номер года, 4 цифры Примеры: 1999, 2003
y Номер года, 2 цифры Примеры: 99, 03
Время
a Ante meridiem (англ. «до полудня») или Post meridiem (англ. «после полудня») в нижнем регистре am или pm
A Ante meridiem или Post meridiem в верхнем регистре AM или PM
B Время в формате Интернет-времени (альтернативной системы отсчета времени суток) от 000 до 999
g Часы в 12-часовом формате без ведущего нуля от 1 до 12
G Часы в 24-часовом формате без ведущего нуля от до 23
h Часы в 12-часовом формате с ведущим нулём от 01 до 12
H Часы в 24-часовом формате с ведущим нулём от 00 до 23
i Минуты с ведущим нулём от 00 до 59
s Секунды с ведущим нулём от 00 до 59
u Микросекунды (добавлено в версии PHP 5.2.2). Учтите, что date() всегда будет возвращать 000000, т.к. она принимает целочисленный ( integer ) параметр, тогда как DateTime::format() поддерживает микросекунды. Например: 654321
Временная зона
e Код шкалы временной зоны(добавлен в версии PHP 5.1.0) Примеры: UTC, GMT, Atlantic/Azores
I (заглавная i) Признак летнего времени 1, если дата соответствует летнему времени, в противном случае.
O Разница с временем по Гринвичу, в часах Например: +0200
P Разница с временем по Гринвичу с двоеточием между часами и минутами (добавлено в версии PHP 5.1.3) Например: +02:00
T Аббревиатура временной зоны Примеры: EST, MDT .
Z Смещение временной зоны в секундах. Для временных зон, расположенных западнее UTC возвращаются отрицательные числа, а расположенных восточнее UTC — положительные. от -43200 до 50400
Полная дата/время
c Дата в формате стандарта ISO 8601 (добавлено в PHP 5) 2004-02-12T15:19:21+00:00
r Дата в формате » RFC 2822 Например: Thu, 21 Dec 2000 16:01:07 +0200
U Количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970 00:00:00 GMT) Смотрите также time()

Любые другие символы, встреченные в строке-шаблоне, будут выведены в результирующую строку без изменений. Z всегда возвращает при использовании gmdate() .

Поскольку рассматриваемая функция принимает в качестве параметра временные метки типа integer , форматирующий символ u будет полезен только при использовании функции date_format() и пользовательских меток времени, созданных с помощью функции date_create() .

Необязательный параметр timestamp представляет собой integer метку времени, по умолчанию равную текущему локальному времени, если timestamp не указан. Другими словами, значение по умолчанию равно результату функции time() .

Возвращаемые значения

Возвращает отформатированную строку с датой. При передаче нечислового значения в качестве параметра timestamp будет возвращено FALSE и вызвана ошибка уровня E_WARNING .

Ошибки

Каждый вызов к функциям даты/времени при неправильных настройках временной зоны сгенерирует ошибку уровня E_NOTICE , и/или ошибку уровня E_STRICT или E_WARNING при использовании системных настроек или переменной окружения TZ . Смотрите также date_default_timezone_set()

Список изменений

Теперь ошибки, связанные с временными зонами, генерируют ошибки уровня E_STRICT и E_NOTICE .

Версия Описание
5.1.0 Допустимым диапазоном дат для временных меток обычно являются даты с 13 декабря 1901, 20:45:54 GMT по 19 января 2038, 03:14:07 GMT. (Они соответствуют минимальному и максимальному значению 32-битного целого числа со знаком). Однако для PHP версии ниже 5.1.0 в некоторых операционных системах (например, Windows) этот диапазон был ограничен датами 01-01-1970 до 19-01-2038.
5.1.0
5.1.1 Для стандартных форматов даты/времени существуют специальные константы, которые могут быть указаны в качестве параметра format .

Примеры

Пример #1 Примеры использования функции date()

// установка временной зоны по умолчанию. Доступно начиная с версии PHP 5.1
date_default_timezone_set ( ‘UTC’ );

// выведет примерно следующее: Monday
echo date ( «l» );

// выведет примерно следующее: Monday 8th of August 2005 03:12:46 PM
echo date ( ‘l jS \of F Y h:i:s A’ );

// выведет: July 1, 2000 is on a Saturday
echo «July 1, 2000 is on a » . date ( «l» , mktime ( 0 , 0 , 0 , 7 , 1 , 2000 ));

/* пример использования константы в качестве форматирующего параметра */
// выведет примерно следующее: Wed, 25 Sep 2013 15:28:57 -0700
echo date ( DATE_RFC2822 );

// выведет примерно следующее: 2000-07-01T00:00:00+00:00
echo date ( DATE_ATOM , mktime ( 0 , 0 , 0 , 7 , 1 , 2000 ));
?>

Чтобы запретить распознавание символа как форматирующего, следует экранировать его с помощью обратного слеша. Если экранированный символ также является форматирующей последовательностью, то следует экранировать его повторно.

Пример #2 Экранирование символов в функции date()

Для вывода прошедших и будущих дат удобно использовать функции date() и mktime() .

Пример #3 Пример совместного использования функций date() и mktime()

Данный способ более надежен, чем простое вычитание и прибавление секунд к метке времени, поскольку позволяет при необходимости гибко осуществить переход на летнее/зимнее время.

Ещё несколько примеров использования функции date() . Важно отметить, что следует экранировать все символы, которые необходимо оставить без изменений. Это справедливо и для тех символов, которые в текущей версии PHP не распознаются как форматирующие, поскольку это может быть введено в следующих версиях. Для экранировании управляющих последовательностей (например, \n) следует использовать одинарные кавычки.

Пример #4 Форматирование с использованием date()

// Предположим, что текущей датой является 10 марта 2001, 5:16:18 вечера,
// и мы находимся во временной зоне Mountain Standard Time (MST)


$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’ ); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date ( ‘\i\t \i\s \t\h\e jS \d\a\y.’ ); // it is the 10th day.
$today = date ( «D M j G:i:s T Y» ); // Sat Mar 10 17:16:18 MST 2001
$today = date ( ‘H:m:s \m \i\s\ \m\o\n\t\h’ ); // 17:03:18 m is month
$today = date ( «H:i:s» ); // 17:16:18
$today = date ( «Y-m-d H:i:s» ); // 2001-03-10 17:16:18 (формат MySQL DATETIME)
?>

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

Примечания

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

Начиная с версии PHP 5.1, временную метку начала запроса можно получить из поля $_SERVER[‘REQUEST_TIME’] .

Смотрите также

  • gmdate() — Форматирует дату/время по Гринвичу
  • idate() — Преобразует локальное время/дату в целое число
  • getdate() — Возвращает информацию о дате/времени
  • getlastmod() — Определение времени последней модификации страницы
  • mktime() — Возвращает метку времени Unix для заданной даты
  • strftime() — Форматирует текущую дату/время с учетом текущих настроек локали
  • time() — Возвращает текущую метку времени Unix
  • strtotime() — Преобразует текстовое представление даты на английском языке в метку времени Unix
  • Предопределенные константы даты и времени

PHP 5 Дата и время

Функция PHP используется date() для форматирования даты и/или времени.

Функция Date () PHP

Функция PHP date() форматирует метку времени для более удобочитаемой даты и времени.

Синтаксис

Параметр Описание
format Обязательно. Задает формат отметки времени
timestamp Дополнительные. Задает метку времени. По умолчанию используется текущая дата и время

Временная метка — это последовательность символов, указывающая дату и/или время, когда произошло определенное событие.

Получить простую дату

Обязательный параметр Format функции Date () указывает, как форматировать дату (или время).

Вот некоторые символы, которые обычно используются для дат:

  • d — Представляет день месяца (от 01 до 31)
  • m — Представляет месяц (от 01 до 12)
  • Y — Представляет год (в четырех цифрах)
  • l (строчная буква ‘ L ‘)-представляет день недели

Другие символы, такие как «/», «.» или «-«, также могут быть вставлены между символами для добавления дополнительного форматирования.

Приведенный ниже пример форматирует сегодняшнюю дату тремя различными способами:

Пример

PHP TIP-автоматический авторский год

Используйте date() функцию для автоматического обновления года авторского права на вашем веб-сайте:

Пример

Получить простое время

Вот некоторые символы, которые обычно используются для Times:

  • h — 12-часовой формат часа с ведущими нулями (от 01 до 12)
  • i — Минуты с ведущими нулями (от 00 до 59)
  • s — Секунды с ведущими нулями (от 00 до 59)
  • a — Нижний регистр Анте меридием и POST меридием (AM или PM)

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

Пример

Обратите внимание, что PHP Date () функция вернет текущую дату и время сервера!

Получите ваш часовой пояс

Если время, которое вы получили от кода, не в нужное время, это, вероятно, потому, что ваш сервер находится в другой стране или настроен для другого часового пояса.

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

В приведенном ниже примере устанавливается часовой пояс на «America/нев_йорк», затем выводится текущее время в указанном формате:

Пример

Создание даты с помощью PHP mktime ()

Необязательный параметр timestamp в функции Date () Указывает метку времени. Если временная метка не указана, будет использоваться текущая дата и время (как показано в приведенных выше примерах).

mktime() функция возвращает метку времени Unix для даты. Метка времени Unix содержит количество секунд между эпохой UNIX (1 1970 января 00:00:00 GMT) и указанное время.

Синтаксис

В приведенном ниже примере создается Дата и время из нескольких параметров в mktime() функции:

Пример

Создание даты из строки с помощью PHP strtotime ()

Функция PHP strtotime() используется для преобразования человеческой читаемой строки в время UNIX.

Синтаксис

В приведенном ниже примере создается Дата и время из strtotime() функции:

Пример

PHP довольно умный о преобразовании строки на дату, так что вы можете поместить в различные значения:

Пример

Тем не менее, strtotime() не является совершенным, поэтому не забудьте проверить строки вы положили туда.

Другие примеры дат


Приведенный ниже пример выводит даты для следующих шести субботы:

Пример

В приведенном ниже примере выводится количество дней до 4 июля:

Пример

Полная справка на дату PHP

Для полной ссылки на все функции даты, перейдите на наш полный справка на дату PHP.

справка содержит краткое описание и примеры использования для каждой функции!

Работа с датой время [закрыт]

В бд хранится дат время в таком формате 1486983600187. Как мне получить читабельный? PHP.

Закрыт по причине того, что необходимо переформулировать вопрос так, чтобы можно было дать объективно верный ответ участниками ermak0ff, user194374, Denis Bubnov, Kromster says support Monica, Akina 9 фев ’17 в 20:00 .

Вопрос порождает бесконечные прения и дискуссии, основанные не на знаниях, а на мнениях. Для получения ответа перефразируйте ваш вопрос так, чтобы на него можно было дать однозначно правильный ответ, либо удалите вопрос вовсе. Если вопрос можно переформулировать согласно правилам, изложенным в справке, отредактируйте его.

4 ответа 4

1486983600187 — это unix-like timestamp в миллисекундах, скорее всего получен из Javascript.

Для получения обычного unix-timestamp его нужно разделить на 1000;

Для получения из timestamp даты-времени в нужном формате существует функция date

Используйте DateTime::createFromFormat и формат U документация

Либо средствами sql

В бд хранится дат время в таком формате 1486983600187.

Hадо было указать, в какой именно СУБД. Предполагаю, что это MySQL. В таком случае гораздо разумнее сразу от сервера получать дату-время, приведённые к нужному типу и отформатированные в нужный вид.

Кроме того, надо было указать тип поля, в котором хранится такое значение. Потому как 1486983600187 для хранения в СУБД ни под UNIXTIME, ни под TIMESTAMP не подходит (для первого слишком велико, а для второго слишком мало).

Если vp_arth прав, и это UNIXTIME, умноженный на 1000,

codedokode / datetime.md

Этот урок переехал по адресу https://github.com/codedokode/pasta/blob/master/php/datetime.md. Ниже старая, неподдерживаемая версия.

##Календари и время

В этом уроке мы поговорим о том, как работать с датой и временем в PHP. Часто в задачах нужно производить какие-то вычисления, связанные со временем, например «определить, какой день недели был 12 февраля 1956 года» или «найти дату на 3 дня позже, чем 26 февраля 2012 года». Не стоит спешить открывать редактор и писать очередной велосипед для работы с датами, давай лучше посмотрим, какие возможности уже встроены в PHP.

В PHP функции работы со временем используют формат unix timestamp (unix time, POSIX time, таймстамп, временная метка). Таймстамп — это число секунд, которое прошло с 00:00 1 января 1970 года UTC. Поскольку секунд с той поры прошло много, таймстампы получаются довольно большие. Например, времени «12:00:00 5 января 2012 года» соответствует число 1380413489. Для дат до 1970-го года используют отрицательные числа.

Получить время в виде timestamp можно несколькими способами:

  • Функция time возвращает текущее время в виде timestamp с точностью до секунды
  • Функция mktime возвращет таймстамп для указанных значений часа, минут, секунд, дня, месяца и года. Например echo mktime(12, 0, 0, 5, 1, 2012); выведет метку времени для 12:00:00 5 января 2012
  • Функция strtotime парсит время из строки в формате вроде ‘2012-01-05 12:00:00’ и возвращает timestamp. Она умеет разбирать дату в большом количестве форматов, подробный список которых можно найти в мануале по этой функции.

Иногда точности функции time() недостаточно. Например, для подсчета времени выполнения функции, которая выполнялась меньше одной секунды. В таких случаях можно использовать функцию microtime , которая возвращает время с высокой точностью, в виде дробного числа секунд. Обрати внимание, ее надо писать, указывая true в скобках: microtime(true) (почему? читай мануал). Вот пример измерения, сколько времени выполнялся цикл:

Преобразовать дату из timestamp обратно в понятный человеку вид можно функцией date . Она выводит ее в указанном формате (что обозначают буковки в описании формата, написано в мануале):

Посмотреть в действии: http://ideone.com/SvvG0f. Еще с помощью функции date легко получить, какому дню недели соответствует дата: echo date(‘N’, $time); .

Также, в PHP есть функция для проверки правильности даты. Допустим, пользователь ввел дату рождения и мы хотим проверить, а не ввел ли он случайно 31 февраля или 37 октября? Для этого можно воспользоваться функцией checkdate , которая проверяет, существуют ли указанные день, месяц и год.

Сложение и вычитание дат

Теперь разберемся, как найти дату, например, «на 3 дня позже заданной». Если пытаться вручную складывать дни, учитывать сколько дней в разных месяцах, это может затянуться надолго, а вот с timestamp все становится проще. 3 суток содержат 3 * 24 = 72 часа, каждый час 3600 секунд. Если мы теперь к исходной timestamp прибавим 3 * 24 * 3600, то мы получим timestamp даты на 3 дня позже. Осталось только вывести эту дату:

Работать с датами можно и с помощью объектов — для этого в PHP есть класс DateTime . Все подробности о нем ты можешь прочесть в мануале. Преимущества объекта DateTime :

  • с помощью этого класса можно преобразовывать даты между разными часовыми поясами (метод setTimezone() ).
  • он позволяет работать с огромными датами, которые не помещаются в обычный timestamp (на 32-битных машинах числа типа int могут быть только от -2 млрд. до +2 млрд., и они позволяет без потерь точности поддерживать даты только от 1900 до 2038 года, если нужно больше, используй DateTime ).
  • Ну и наконец, любителям ООП он понравится больше

Недостатки: для простых случаев кода получается больше, чем с mkdate / strtotime .

Ну что, с таким багажом ценных знаний для тебя совсем не составит труда решить эти задачи:

1 . Сделай программу, определяющую по дате рождения день недели и знак Зодиака. Например, указываешь дату «1999-06-25», она пишет «Ты родился 25 июня 1999 в пятницу, значит ты Рак». Соответствие между датой и знаком Зодиака легко найти в википедии: http://ru.wikipedia.org/wiki/Знаки_зодиака.

Слишком просто? Держи задачу посложнее.

2 . Дана дата из 2012 года, например, «2012-04-15». Посчитай дату, которая наступает через 5 рабочих дней после нее. «5 рабочих дней» значит, что в этот интервал не включаются выходные и праздники. Выходные — это субботы и воскресенья (кроме тех, что были превращены в рабочие дни), а список праздников легко найти в интернете: http://www.legalcalc.ru/date-calculator/nerabochie-dni-2012.htm.

В общем, решай задачки, полезно для мозгов.

Работаем с датой и временем в php

В статье описано:
1. Как преобразовать UNIX timestamp в дату в заданном формате
2. Как узнать завтрашнюю/вчерашнюю дату
3. Как получить дату с определённым сдвигом (на X дней раньше/позже)
4. Как посчитать разницу между датами
5. Как перевести DDD дней в X лет Y месяцев Z лет
6. Как перевод из date в timestamp — разбор даты в русском формате

Работа с датой и временем в PHP относительно несложная. Наличие довольно большого количества функций делает код не таким громоздким (а в PHP 5.2 с появлением DateTime и в 5.3 с добавлением классов DateInterval и DatePeriod и отдельных методов — работа с датами стала ещё проще и удобнее). Итак, для работы с датой…Во-первых, в любом случае, следует иметь в виду, что:

  • практически любое действие можно сделать несколькими способами;
  • весь код написан для демонстрации и примеров работы;
  • не всегда предложенный альтернативный результат может подходить при использовании более ранней версии PHP (иногда проще устанавливать более раннюю версию PHP5.2, чем править работающий код многолетней давности);

В PHP 5.3 для корректной работы с датой во избежание ошибок Strict Standarts


. На сегодняшний день, как правило эта ситуация учитывается либо в скриптах, либо в настройках хостинга.

PHP преобразовать UNIX timestamp в дату в заданном формате

Одна из самых простых задач. Используется функция: date($format, $time)

Первым параметром передаём формат даты — подробнее см в документации (для “привычного нам” 28.02.2012 15:43:59 следует использовать:

  1. date ( ‘d.m.Y H:i:s’ , $time )

PHP как узнать завтрашнюю/вчерашнюю дату

Тут тоже всё просто. Функцией time() получаем текущее время в формате UNIX Timestamp. Отнимаем (вчерашняя дата) или прибавляем (завтра) нужное количество секунд (86400 = 3600*24 — в сутках) и получаем:

  1. $now = time (); // использовать не обязательно
  2. $yesterday = time ()- 3600 * 24 ;
  3. $tomorrow = time ()+ 3600 * 24 ;
  4. $weekBefore = time () — 3600 * 24 * 7 ; // неделю назад
  5. echo ‘Вчера: ‘ , date ( ‘d.m.Y’ , $yesterday ), ‘
  6. Завтра:’ , date ( ‘d.m.Y’ , $tomorrow );

PHP как получить дату с определённым сдвигом (на X дней раньше/позже)

Иногда требуется узнать дату, которая будет через несколько дней от указанной. Например, пользователь оплатил услугу 11 февраля 2013 года на 3 недели. Имеется информация об оплате. До какого числа оплачено?

Когда можно “просто” прибавить пару дней и получить 13 февраля — особых сложностей процедура не вызывает. Но как быть с разным количеством дней в месяце? Как быть с високосным годом? Всё уже придумано до нас — для вычисления даты по известному интервалу будем использовать mktime

  1. $payment = array( ‘day’ => 11 , ‘month’ => 2 , ‘year’ => 2013 );
  2. $toDate = mktime ( 0 , 0 , 0 , $payment [ ‘month’ ], $payment [ ‘day’ ]+ 3 * 7 , $payment [ ‘year’ ]);
  3. // вывод
  4. echo date ( ‘d.m.Y’ , $toDate );
  5. // в PHP > 5.3 с использованием DateInterval
  6. date_default_timezone_set ( ‘Europe/Moscow’ );
  7. $datetime = new DateTime ( date ());
  8. // минус 7 дней
  9. $datetime -> sub (new DateInterval ( ‘P7D’ )
  10. );

PHP как посчитать разницу между датами

Казалось бы простая ситуация — есть две даты, посчитать количество дней (месяцев и дней) между ними. Однако, “ручная” реализация потребует некоторого времени, и есть шанс что-либо упустить (для спортивного интереса — желающие попробовать могут оставлять код в комментариях). В PHP для вычисления разницы между датами есть встроенная функция date_diff(), или точнее Datetime::diff()

  1. $datetime1 = new DateTime ( ‘2013-05-01’ );
  2. $datetime2 = new DateTime ( ‘2013-01-01’ );
  3. $interval = $datetime1 -> diff ( $datetime2 );
  4. echo $interval -> format ( ‘%R%a days after New Year’ );

PHP перевести DDD дней в X лет Y месяцев Z лет

Иногда требуется вывести время после определённого события. Например, после регистрации прошло. Для удобства (3200 дней мало о чём говорит) восприятия перевести в годы и месяцы можно используя форматирование DateInterval::format()

  1. $registerDate = new DateTime ( ‘2009-03-03’ );
  2. $today = new DateTime ();
  3. $interval = $today -> diff ( $registerDate );
  4. echo ‘С момента регистрации прошло: ‘ ;
  5. echo $interval -> format ( ‘%a дней’ ). «\n» ; // общее количество дней
  6. echo ‘ или ‘ ;
  7. echo $interval -> format ( ‘%m месяцев, %d дней’ ); // месяцев, дней

PHP перевод из date в timestamp — разбор даты в русском формате

Иногда требуется перевести дату в формате, удобном для восприятия в формат UNIX TIMESTAMP Для разбора даты в формате ‘2013-05-30 12:35′ на составляющие (отдельно получить год, месяц, день) можно воспользоваться функцией date_parse. Для перевода сразу в unix timestamp — можно использовать strtotime (а также вариации вроде ‘now’, ‘+1 day’, ‘next Thursday’ — можно посмотреть здесь

  1. echo strtotime ( ‘2013-05-30’ );
  2. print_r ( date_parse ( ‘2013-05-30 12:35’ ));

Однако, для России более привычный формат ДД.ММ.ГГГГ . Можно, конечно, разбить дату по символу точки, получить день, месяц, год и при помощи функции mktime узнать соответствующее значение UNIX TIMESTAMP. В PHP5.3 появилась функция date_parse_from_format() , в которую можно передать строку с форматом. А для PHP5.2 я использовал strptime (о существовании которой, как выяснилось, не все догадываются, возможно, потому, что она банально не реализована для Windows: This function is not implemented on Windows platforms):

  1. $date = ‘30.05.2013 12:35’ ;
  2. $format = ‘d.m.Y H:i’ ;
  3. print_r ( date_parse_from_format ( $format , $date ));
  4. // альтернативный вариант для PHP5.2
  5. $format = ‘%d.%m.%Y %H:%M’ ; // отличается от используемого в функции date
  6. $d = strptime ( $date , $format );
  7. $newDate = mktime ( $d [ ‘tm_hour’ ], $d [ ‘tm_min’ ], $d [ ‘tm_sec’ ],
  8. $d [ ‘tm_mon’ ]+ 1 , $d [ ‘tm_mday’ ], $d [ ‘tm_year’ ]+ 1900 ); // tm_mon 0-11, tm_year 1900
  9. echo $newDate ;

Кроме того, у функции strptime есть особенности — месяц сдвинут на единичку (Январь — 0), а год — это количество лет с 1900 года, т.е. для 2013 $d[’tm_year’] будет равно 113.

PHP Дата и Время – используем ООП для работы с датой и временем

Рассмотрим, как работать с датами и временем в PHP.

Время в Unix-компьютерах

Для Unix-компьютеров начало отсчета времени –– полночь 1 января 1970 года. Любая дата вычисляется как количество секунд (обозначаемое timestamp –– метка времени), прошедших с 1.01.1970 года. Эти соглашения также используются в PHP. Например, мы хотим перейти на день вперед. Тогда нужно лишь добавить к текущему значению timestamp 60×60×24 секунд.

Такая схема учета времени существенно облегчает операции с датами. Например, если одно значение timestamp больше другого, первое значение соответствует более поздней дате, чем второе.

Единицы времени в сек

Сек Время
60 Одна минута
3600 Один час
28800 8 часов
86400 Один день
604800 Одна неделя

Получение текущего времени

В PHP для получения текущего значения timestamp надо вызвать функцию time() без параметров, например:

Многие PHP-функции для работы с датой и временем в качестве аргумента принимают значение timestamp. Например, функция date() возвращает отформатированную в соответствии с заданным форматом строку даты, например:

Создание timestamp по дате

Функция mktime() создаст timestamp, если указать час, минуту, секунду, день месяца, месяц и год:

Функция strtotime()

Функция формирует timestamp для даты, указанной в виде фразы на английском, например April 1 или Friday.

Вызов
strtotime(“Friday”) Пятница, полночь
strtotime(“2008-10-01”) 1 октября 2008 г, полночь
strtotime(“-2 months”) Два месяца назад с текущего момента

Значение даты нужно задавать в формате ГГГГ-ММ-ДД. Если функция strtotime не может преобразовать дату, она возвращает false.

Примеры использования функции date( )

Встроенная функция floor() используется для того, чтобы отбросить дробную часть результата.

Следующий текст при первом чтении можно пропустить

Форматы даты в базах данных MySQL

Формат timestamp в PHP несовместим с форматом timestamp в СУБД MySQL.

В MySQL есть три типа полей даты и времени: DATA (дата), TIME (время), DATETIME (дата и время). Также имеется специальный тип данных TIMESTAMP, который работает подобно DATETIME, но автоматически обновляется в соответствие с текущим временем при каждой вставке или обновлении записей таблицы.

Для преобразования timestamp в формате PHP в формат MySQL можно использовать такой код:

Например, можем использовать “2008-10-01 13:23:40” как дату и время.

Чтобы получить PHP-timestamp из запроса SELECT, надо использовать SQL- функцию UNIX_TIMESTAMP():

SELECT UNIX_TIMESTAMP(дата) FROM таблица

В MySQL есть много и других полезных функций для работы с датой и временем.

Функция date() — вывод даты и времени в PHP

В PHP3 и PHP4 существует много разных встроенных функций, которые не надо писать самому, среди них есть и date() — функция вывода даты и времени, о которой будет описано вмести с примерами ниже.

Если Вы когда-то сталкивались с проблемой вывода местного (установленное на сервере) времени и даты, то не надо прибегать к помощи JavaScript, который может быть отключён у конкретного пользователя, просто воспользуйтесь функцией date(). Использовать date() очень просто и удобно, из-за всевозможных параметров вывода. И пользователь получит в итоге простую HTML страницу, т.к. все операции по определению даты и времени будут происходить на сервере.

Функция даты и времени возвращает строку и принимает аргументы format (строка) и time stamp (целое число) — необязательный аргумент:
string date (string format [, int timestamp]);

Возвращает отформатированную строку теста и цифр согласно параметрам, указанным в аргументе format. Аргумент timestamp

В таблице 1.1 представлены параметры аргумента format(при вводе параметров необходимо соблюдать регистр):

Илон Маск рекомендует:  Что такое код ansilower
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL