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


Calculate dates relative to input date

使用我现在的代码,它成功地返回了1969年和1970年的日期。$endDate的示例是2013年8月23日。日、月、年。

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

这个代码似乎没有给出相对于给定日期的上周日和下周六,所以我想知道我是否做错了什么。

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

我认为您正在寻找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));
}