Суббота , 20 Апрель 2024
ДомойПубликациипростая работа со временем/датами на php

простая работа со временем/датами на php

php

чем хорош php для тех, кто его знает в разной степени — всегда можно решить требуемую задачу. иногда кода потребуется много, а иногда можно обойтись буквально несколькими строками.

порой встречаются задачи вычисления даты через некий промежуток времени. при этом какая-то дата либо задаётся, либо отсчитывается от текущего момента.

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

$time = mktime($hour, $minute, $second, $month, $day, $year, $is_dst);

но если первичная дата имеет вид «2011-07-07 12:13:14», то сначала из неё потребуется с помощью нескольких вызовов explode или substr, выделить нужные данные, а потом добавить их в вызываемую функцию в правильном порядке. после этого к timestamp`у прибавляется требуемый интервал, и затем с помощью функции date() получается нужная дата.

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

но ни один из этих методов не является достаточно гибким и простым для понимания. в php 5.2.0 появилось много полезных классов. один из них — DateTime. сразу приведу пример решения задачи, она и правда решается очень просто:

$date = new DateTime('2011-02-03 04:05:06');
$date->modify('+1 day');
echo $date->format('Y-m-d H:i:s');

первой строкой идёт создание экземпляра класса, второй — непосредственно операция по модификации даты, а третья строка выводит полученное значение на экран.

во второй строке можно использовать не только знак +, но и -. а вместо слова day допускается использование следующих основных ключевых слов: year, month, hour, minute, second.

кстати, если в первой строке вызвать класс без параметров:

$date = new DateTime;

будет использоваться текущее время.

и напоследок: если после вызова конструктора будет получено сообщение об ошибке, вроде такого: «Strict standards: DateTime::__construct(). It is not safe to rely on the system’s timezone settings. и ещё что-то…», это значит, что в конфиге php всего лишь не установлена временная зона. ничего страшного, сделать это можно прямо в скрипте вызвав такую функцию (естественно, до конструктора):

date_default_timezone_set('Europe/Moscow');
Рейтинг: 0

Автор публикации

2 070
не в сети 12 месяцев

x64 (aka andi)

Комментарии: 2893Публикации: 405Регистрация: 02-04-2009
Так себеНеплохоХорошоЗамечательноСупер! (Оценок пока нет)
Загрузка...

Оставить комментарий

Политика конфиденциальности

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

Принять