Для работы со временим и датами в PHP 5.2 и выше существует класс DateTime. Он заменяет функционал старых функций для работы со времением/датами.
Чтобы получить текущую дату/время нужно создать объект DateTime без передачи ему параметров.
$now = new DateTime();
Для получения объекта DateTime из строки содержащей время существует статический метод createFromFormat(string $format, string $time). Первый параметр - формат передаваемой даты/времени. Второй параметр - строка содаржащая дату/время в формате, переданном в первом параметре %)
Формат даты/времени может выглядеть например так:
что означает запись например такого вида:
2009-02-15 15:16:17.
В приведенной выше строке формата латинские буквы означают следующее:
- Y -- запись года четырьмя цыфрами (например 2013);
- m -- запись месяца двумя цыфрами с 01 по 12 (например 07);
- d -- день месяца двумя цыфрами с 01 по 31;
- H -- запись часа в 24-ох часовом формате двумя цыфрами с 00 до 23;
- i -- минуты с нулем в начале;
- s-- секунды с нулем в начале.
Существуют так же следующие символы формата даты/времени:
- D и l -- текстовое представление дня месяца (От Mon до Sun либо от Sunday до Saturday);
- z -- номер дня с начала года;
- F и M -- текстовое представление месяца, например January или Sept;
- y -- 2 цифровое представление года (например 03 -- это 2003 год);
- a и A -- до полудня и После полудня (am или pm);
- g и h -- 12-ти часовой формат времени с первым нулем или без него.
Для обратного преобразования объекта DateTime в строку существует метод format(string $format). В качестве параметра принимает строку с форматом даты/времени (таким же как в методе createFromFormat).
Для того чтобы вычесть или добавить в дате/времени какой-либо интервал времени (например 2 часа или 3 месяца), нужно воспользоваться методом add(DateInterval $interval) или sub(DateInterval $interval). ВАЖНО: Преобразование применяется к объекту для которого вызавается метод. В качестве параметров эти методы принимают объект класса DateInterval.
В качестве параметра конструктор этого класса принимает строку с интревалом времени в формате из спецификации ISO 8601. В соответсвии с ней: строка с интервалом времени начинается с латинсткой буквы P. Длина каждого периода описывается целым значением и следующим за ним указателем периода. Если длина периода содержит время, то его описанию должна предшествовать буква T. Например 2 дня записываются так -- P2D. Две секунды -- PT2S. Допустимы следующие обозначения интервалов:
- Y -- года;
- M -- месяцы;
- D -- дни;
- W -- недели;
- H -- часы;
- M -- минуты;
- S -- секунды.
Помимо конструктора создать объект интервала времени можно с помощью статического метода DateInterval::createFromDateString(string $time). Он принимает в качестве параметра строку с интервалом времени в более читаемом виде. Например:
1 day
2 weeks
3 months
и даже
1 year + 1 day
1 day + 12 hours.
Таким образом благодаря классу DateTime работа с датами и временем в PHP не вызывает сложностей.
Комментариев нет:
Отправить комментарий