Давая дату начала, я добавляю четыре раза семь дней, чтобы получить 5 разных дат, разделенных ровно на неделю каждый.
//$date = '28-10-2010';
$timestamp = mktime( 0, 0, 0, 10, 01, 2010 );
echo "Date=".date( 'd-m-Y', $timestamp )."<br>";
$timestamp += (60*60*24*7);
echo "Date=".date( 'd-m-Y', $timestamp )."<br>";
$timestamp += (60*60*24*7);
echo "Date=".date( 'd-m-Y', $timestamp )."<br>";
$timestamp += (60*60*24*7);
echo "Date=".date( 'd-m-Y', $timestamp )."<br>";
$timestamp += (60*60*24*7);
echo "Date=".date( 'd-m-Y', $timestamp )."<br>";
Код выводит это:
Date=01-10-2010 Friday
Date=08-10-2010 Friday
Date=15-10-2010 Friday
Date=22-10-2010 Friday
Date=29-10-2010 Friday
Которое я знаю, это правильно. Но посмотрите, что произойдет, пройдя 2010-10-31 и 2010-11-01.
$timestamp = mktime (0, 0, 0, 10, 28, 2010); [...]
Любопытно, что он выводит это:
Date=28-10-2010 Thursday
Date=03-11-2010 Wednesday
Date=10-11-2010 Wednesday
Date=17-11-2010 Wednesday
Date=24-11-2010 Wednesday
Что происходит? Вторая дата должна быть 04-11-2010! Кроме того, я видел, что этот "провал" происходит каждые десять лет! Связано ли это с летним временем? Если да, то как это решить? Есть ли что-то, что я пропускаю?
Изменить: Хорошо, я отобразил время, просто чтобы узнать, что произойдет, и это то, что я получил сейчас:
Date=28-10-2010 Thursday :: 00:00:00
Date=03-11-2010 Wednesday :: 23:00:00
Date=10-11-2010 Wednesday :: 23:00:00
Date=17-11-2010 Wednesday :: 23:00:00
Date=24-11-2010 Wednesday :: 23:00:00
Кажется, что-то связано со временем, что-то происходит в 2010-11-31...