Мне нужно найти дату через определенное количество недель. Например, если датой начала является суббота, 31 октября 2009 года, и если я выберу 16 недель, мне нужно будет найти дату после шестнадцати суббот.
Заранее спасибо.
Вы можете использовать strtotime :
// Oct 31 2009 plus 16 weeks echo date('Y-m-d', strtotime('2009-10-31 +16 week')); // outputs 2010-02-20 // next week echo date('Y-m-d', strtotime('+1 week')); // outputs 2009-11-07
strtotime() - это то, что вы хотите: оно берет выражение и превращает его в объект даты. Также см. date():
strtotime()
date()
$date = '31 october 2009'; $modification = '+ 16 weeks'; echo date('Y-m-d (l)', strtotime("$date")); //2009-10-31 (Saturday) echo date('Y-m-d (l)', strtotime("$date $modification")); // 2010-02-20 (Saturday)
Если вы используете PHP 5.2.0 или новее, вы можете использовать класс DateTime
<?php $date = new DateTime('31 October 2009'); // This accepts any format that strtotime() does. // Now add 16 weeks $date->modify('+16 weeks'); // Now you can output it however you wish echo $date->format('Y-m-d'); ?>
Почему бы просто не использовать время Unix, вычесть 7 * 24 *3600* 16 из этого и затем преобразовать это обратно в нужную вам дату.
Это поможет с конвертацией обратно: http://php.net/manual/en/function.date.php