Здрасти всем. Мне нужно вывести на экран все понедельники и субботы всех месяцев (т.е. даты начала и конеца недели). Первое что пришло в голову определить конец недели как: начало недели +5, а начало недели=конец недели +2 (т.к. два выходных дня). А что делать если первая неделя следующего месяц начинается не с первого числа? Т.е. у меня проблема с выводом даты окончания последней недели месяца. Помогите плиз, кто знает.
У меня это так реализовано: PHP: <?PHP $cur_time = time(); $week_start = strtotime("last Monday",mktime(0,0,0,date("n",$cur_time),date("j",$cur_time),date("Y",$cur_time))); $week_end = $week_start+7*24*60*60; ?>
09.06.2008 00:00:00 16.06.2008 11:51:07 PHP: <?php $cur_time = time(); $week_start = strtotime("last Monday",mktime(0,0,0,date("n",$cur_time),date("j",$cur_time),date("Y",$cur_time))); $week_end = $week_start+7*24*60*60; echo date('d.m.Y H:i:s', $week_start), '<br/>', date('d.m.Y H:i:s', time()); show_source(__FILE__); ?> я что-то делаю не так?)
PHP: <?php $offset = mktime(0, 0, 0, 1, 1, date('Y')); for ($i = 0; $i <= 51; $i += 1, $offset += 604800) { $m = strtotime('Monday', $offset); $s = strtotime('Saturday', $offset); print date('r', $m) . ' - ' . date('r', $s) . '<br />'; } Или в стиле Perl PHP: <?php for ($i = 0, $offset = mktime(0, 0, 0, 1, 1, date('Y')); $i < 51; $i += 1, $offset += 604800) print date('r', strtotime('Monday', $offset)) . ' - ' . date('r', strtotime('Saturday', $offset)) . '<br />';
DarkElf Глюк. ))) Попробуй так (не проверял): PHP: <?php $cur_time = time(); $week_start = (date("w")==1)?strtotime("0 hours 0 seconds") : strtotime("last Monday",mktime(0,0,0,date("n",$cur_time),date("j",$cur_time),date("Y",$cur_time))); $week_end = $week_start+7*24*60*60; echo date('d.m.Y H:i:s', $week_start), '<br/>', date('d.m.Y H:i:s', $week_end); ?>