2013-04-10 4 views
0

Я выбираю дату из jquery datepicker, и я хочу выбрать начальную и конечную дату недели, которая предшествует этой дате. - например, сбор 10 апреля 2013 года должен быть возвращен 31 марта 2013 года и 6 апреля 2013 года. Воскресенье - первый день недели, а последняя суббота.получение даты начала и окончания недели, предшествующей данной дате

Ниже приведен мой код.

$weekday = $d->format('w'); 
$diff = 7 + ($weekday == 0 ? 6 : $weekday - 0); //to make week start from monday till  sunday add 1 to weekday - 

$start1 = $d->modify("-$diff day"); 
$start_date = $d->format('Y-m-d'); 

$end1 = $d->modify('+6 day'); 
$stop_date = $d->format('Y-m-d'); 

Код работает нормально, по крайней мере в основном. Однако, когда я выбираю любое воскресенье, я получаю неправильный не ожидаемый результат, который является предыдущей неделей предыдущей недели. , например, если я выбираю 31 марта 2013 года, мне нужно пройти 24 марта и 30 марта, но я получаю марш 28 и марш 24.

Где я иду не так?

+1

Есть п + 1 число подобных вопросов. – hjpotter92

+0

@ hjpotter92. можете ли вы любезно показать ссылку на кого-нибудь? (или найти значение n, видимо, у вас много времени) – tony9099

+1

ok im здесь, чтобы помочь вам так помочь мне помочь вам в порядке? – ncm

ответ

0

Попробуйте это, он должен решить проблему:

$input = 'April 10, 2013'; // come from jquery 

$dt = new DateTime($input . ' -1week'); 

$monday = clone $dt->modify(('Sunday' == $dt->format('l')) ? 'Monday last week' : 'Monday this week'); 
$sunday = clone $dt->modify('Sunday this week'); 

printf("You've selected a date in the week from %s to %s\n", 
    $monday->format('Y-m-d'), 
    $sunday->format('Y-m-d') 
);