计算相对于输入日期的日期

时间:2013-08-12 21:02:22

标签: php

使用我现在的代码,它设法在1969年和1970年返回日期。$ endDate的例子是23-8-2013。日,月,年。

$endDte = date_create_from_format('j-n-Y', $endDate);

echo date('Y-m-d', strtotime('-1 Sunday', strtotime($endDte))). date('Y-m-d', strtotime('+1 Saturday', strtotime($endDte)));

这个代码似乎没有给我一个前一个星期日和下一个星期六相对于给定的日期所以我想知道我做错了什么。

2 个答案:

答案 0 :(得分:2)

date_create_from_format会返回DateTime个对象,而不是您应该通过strtotime运行的字符串...:

$date = date_create_from_format('j-n-Y', $endDate);

$startdate = clone $date;
$startdate->modify('-1 Sunday');

$enddate = clone $date;
$enddate->modify('+1 Saturday');

echo $startdate->format('Y-m-d').' => '.$enddate->format('Y-m-d');

答案 1 :(得分:0)

我认为您正在寻找last sundaynext saturday,而不是-1 sunday+1 saturday 然后我将它们包装成函数,这是最后一个星期天的例子:

function lastSunday($ts=time(), $weeksApart=1){
  if(date('N', $ts) == 7){
    $time = $ts;
  } else{
    $time = strtotime('last sunday', $ts);
  }
  return date('Y-m-d', strtotime('+'.$weeksApart.' weeks', $ts));
}