获取在给定日期之前的一周的开始和结束日期

时间:2013-04-10 13:23:03

标签: php date

我正在从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 个答案:

答案 0 :(得分: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')
);