Добавяне и изваждане на дати

Задача
Трябва да добавите или извадите интервал от датата.

Решение
В зависимост от това как представяте датата и интервала, трябва да използвате функцията strtotime () или някои прости аритметични функции. Ако датата и интервалът са в подходящия формат, тогава е по-лесно да извикате функцията strtotime ():

$ birthday = '10 март 1975 г.';
$ whoopee_made = strtotime ("$ рожден ден - преди 9 месеца");

Ако датата е представена като времева марка UNIX и интервалът може да бъде изразен в секунди, тогава извадете интервала от времевия печат:

$ рожден ден = 163727100;
$ гестация = 36 * 7 * 86400; // 36 седмици
$ whoopee_made = $ рожден ден - $ гестация;

Дискусия
Функцията strtotime () е удобна за използване на интервали с променлива дължина като месеци. Ако не можете да използвате тази функция, можете да конвертирате датата в клеймо за време и да добавите или извадите интервал в секунди. Това е най-удобно за фиксирани интервали от време, като дни или седмици:

$ сега = време ();
$ следваща седмица = $ сега + 7 * 86400;

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


В този случай продължителността на един от дните няма да бъде равна на 86 400 секунди, а ще бъде или 82 800, или 90 000 секунди, в зависимост от сезона. Ако приложението работи изключително с UTC, не е нужно да се притеснявате за това. Но ако трябва да вземете предвид местното време, тогава юлианското представяне на датите ще помогне да се избегнат затруднения при броене на дни. Преобразуванията между времеви марки и юлиански дати се предоставят от функциите unixtojd () и jdtounix ():

$ сега = време ();
$ днес = unixtojd ($ сега);
$ next_week = jdtounix ($ днес + 7);
// не забравяйте да добавите часове, минути и секунди
$ next_week + = 3600 * дата ('H', $ сега) + 60 * дата ('i', $ сега) + дата ('s', $ сега);

Функциите unixtojd () и jdtounix () са включени в модула на календара и следователно са достъпни само ако PHP е компилиран с поддръжка на PHP (версията на Windows има вградена поддръжка за това разширение).