Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.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中存储在变量from date中的子结构天数_Php_Date - Fatal编程技术网

PHP中存储在变量from date中的子结构天数

PHP中存储在变量from date中的子结构天数,php,date,Php,Date,正如标题所说,我试图从日期中减去天数(存储在变量中)。我正在使用date\u sub功能。 这是一个变量,它包含我要减去的天数(字段中的整数) 职能: $chargedate=date_sub($arrivaldate,date_interval_create_from_date_string($days."days")); $arrivaldate = date('Y-M-D', strtotime($arrivaldate)); $charge

正如标题所说,我试图从日期中减去天数(存储在变量中)。我正在使用
date\u sub
功能。 这是一个变量,它包含我要减去的天数(字段中的整数)

职能:

$chargedate=date_sub($arrivaldate,date_interval_create_from_date_string($days."days"));
    $arrivaldate = date('Y-M-D', strtotime($arrivaldate));
    
    $chargedate=date_sub(
        $arrivaldate,
        date_interval_create_from_date_string($days."days")
    );
$arrivaldate
是包含日期的变量,我想从中减去
$days

当我使用它时,我得到警告
date\u sub()期望参数1是DateTime,字符串在第55行的:\xampp\htdocs\Project\file.php中给出


我想我搞砸了连接,但我无法理解这一点。如果您有任何帮助,我们将不胜感激。

在将$arrivaldate变量传递到date_子函数之前,请尝试这样转换它:

$chargedate=date_sub($arrivaldate,date_interval_create_from_date_string($days."days"));
    $arrivaldate = date('Y-M-D', strtotime($arrivaldate));
    
    $chargedate=date_sub(
        $arrivaldate,
        date_interval_create_from_date_string($days."days")
    );

根据错误消息,在调用
date\u sub
之前,您需要从
$arrivaldate
创建
DateTime
对象:

$date = date_create(date('Y-m-d', strtotime($arrivaldate)));
$chargedate = date_sub($date,date_interval_create_from_date_string($days." days"));
echo date_format($chargedate, "Y-m-d");

我添加了strotime,因为不清楚您使用的是什么格式,但它可能不是必需的。

只有在DateInterval已经可用的情况下,date\u sub和date\u add函数才在实践中使用。您的任务可以更高效、更轻松地使用


重要信息:$arrivaldate中的日期必须采用DateTime接受的格式。

请显示您的日期。你的约会是字符串吗?格式如何?例如$arrivaldate=“2021-02-11”会有所帮助。