2013-04-10 161 views
0

我從jquery datepicker中選擇一個日期,我想選擇該日期之前一週的開始和結束日期。 - 例如,選擇2013年4月10日應返回2013年3月31日和2013年4月6日。 星期日是一週的第一天,星期六是最後一天。獲取指定日期之前的星期的開始和結束日期

以下是我的代碼。

$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'); 

該代碼工作正常,至少主要是。但是,當我選擇任何星期天時,我會得到一個錯誤的預期結果,這是前一週的前一週。例如,如果我選擇2013年3月31日 - 我應該得到3月24日和3月30日,,但我得到3月28日和3月24日。

我在哪裏出錯了?

+1

有N + 1號的類似的問題。 – hjpotter92 2013-04-10 13:26:14

+0

@ hjpotter92。你能不能顯示任何一個鏈接? (或找到n的價值,顯然你有很多時間) – tony9099 2013-04-10 13:28:56

+1

好吧在這裏,以幫助你,所以幫助我幫助你好嗎? – ncm 2013-04-10 13:29:32

回答

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') 
); 
相關問題