Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从给定日期起一周前获取_Php_Date_Datetime - Fatal编程技术网

Php 从给定日期起一周前获取

Php 从给定日期起一周前获取,php,date,datetime,Php,Date,Datetime,我有一个每月账单表,存储在客户需要以Y-m-d格式付款的地方,我需要在到期日前一周发送电子邮件通知。例如: public function cronSendNotif($transaction){ $dueDate = $transaction->getDueDate(); // 2019-08-03 $weekAgo = $this->getWeekAgoDate($dueDate); // 2019-07-27 $this->sendEmailNotifica

我有一个每月账单表,存储在客户需要以
Y-m-d
格式付款的地方,我需要在到期日前一周发送电子邮件通知。例如:

public function cronSendNotif($transaction){
  $dueDate = $transaction->getDueDate(); // 2019-08-03
  $weekAgo = $this->getWeekAgoDate($dueDate); // 2019-07-27

  $this->sendEmailNotification($transaction->getId(),$weekAgo);
}

private function getWeekAgoDate($dueDate){
   // how ??
}

如果我有
Y-m-d
格式的给定日期,如何获得
Y-m-d
格式的一周前日期?

使用strotime,您可以简单地从日期中添加/减去天、周等。例如:

function getWeekAgoDate($dueDate){
   return date("Y-m-d", strtotime($dueDate . "-1 week"));
}
试试这个:

private function getWeekAgoDate($dueDate){
  $weekAgo = date('Y-m-d', strtotime('-7 days', strtotime($dueDate)));
  return $weekAgo;
}

还可以使用“修改”功能

$weekAgo = getWeekAgoDate($dueDate);
echo $weekAgo->format('Y-m-d H:i:s');

function getWeekAgoDate(DateTime $dueDate){
   return $dueDate->modify("- 7 days");
}

文档:php.net/manual/en/datetime.modify.php

使用
datetime
类,加载所需日期,减去1周,回声格式,利润!:到目前为止你试过什么?你被困在哪里?请给你的代码添加一些解释-
+7天
怎么能返回一周前的日期?如果你想强制输入变量,为什么不使用类型提示呢?@NicoHaase我错了,我在发布答案并编辑它之后马上意识到了这一点。应该是-。这是文档:请将所有解释添加到您的答案中,而不是添加到评论部分。尽管如此,如果您想强制执行
$dueDate
具有正确的类型,您应该键入提示该参数