Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Узнать начало текущей недели


Автор: Dronakasmart 17.6.2010, 23:04
Всем доброго времени суток!

Мне нужно в скрипте ( вывод лучшей фотографии за неделю ) получить начало текущей недели,а именно число понедельника в этой неделе.Как можно это сделать?Пока я пришел к варианту использовать Cron который запускает скрипт в понедельник каждой недели,который обновляет начало недели в базе данных,но этот вариант довольно неудобен.Скажите как это можно сделать из кода.

Спасибо

Автор: bars80080 17.6.2010, 23:16
здесь есть множество параметров для определения характеристик даты 
http://www.php.ru/manual/function.date.html
определить текущий день недели, а затем вычесть и получить понедельник не составит труда


либо поможет более простой метод http://www.php.ru/manual/function.strtotime.html
непосредственно заточенный под эту задачу

Автор: Dronakasmart 17.6.2010, 23:50
Спасибо!Но так вышло, что сразу после того как создал тему придумал общую концепцию функции и сделал её  smile В общем вот,пользуйтесь кто нуждается:
Код

    // Получить понедельник (начало) текущей недели
    function getWeekMonday()
    {
         $weekday = strftime("%w");
         if($weekday == 1)
         return mktime(0,0,0,date("m"),date("d"),date("Y")); // Если понедельник то вернем понедельник :D
         
         if($weekday == 0)
         $weekday = 7; // Сдесь воскресение - 0,если так и будет то работа функции собьется
         
         $mday = strftime("%d");
         return mktime(0,0,0,date("m"),$mday - ($weekday - 1),date("Y")); // Получаем штамп
    }

От штампа идем дальше,например так
Код

$stamp = getWeekMonday();
echo date("Y-m-d",$stamp); // Выведет год-месяц-день понедельника текущей недели

Автор: NLspieler 18.6.2010, 00:17
Простой арифметический метод узнавания понедельника из текущема таймштампа

Код

function getWeekMonday()
{
    $time = time () ;
    return  $time - ($time - 345600 ) % 604800 ;
}

$stamp = getWeekMonday();
echo date("Y-m-d",$stamp);

Автор: Fortop 18.6.2010, 01:09
Dronakasmart, 
NLspieler, 
а ссылку на мануал по strtotime, что дал bars80080, никто из вас не желает прочитать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)