在PHP中通过sqlsrv_fetch_array返回的日期添加天数

时间:2018-06-29 05:26:01

标签: php date-format sqlsrv

最初,当我使用php_msssql扩展名时,以下行已工作

$test2_date = date('d-M-y', strtotime( "".$res["test_date"]." +".$noofdays." days" ));

$res是数组。

然后我更改为php_sqlsrv_53_ts_vc9扩展名,由于上述行不起作用,因为“ date”在此扩展名中不起作用,因此我使用了在sqlsrv中工作的“ date_format”。我的代码行如下所示

$test2_date = date_format(strtotime( "".$res["test_date"]." +".$noofdays." days" ), 'd-M-y');

但是strtotime无法正常工作,因此出现以下错误:-

  

可捕获的致命错误:日期时间类的对象无法转换   串起来。

我应该用什么来添加日期?

2 个答案:

答案 0 :(得分:1)

date_format将日期对象作为第一个参数。因此需要首先使用date_create创建日期对象。代码应为:

$date = date_create($res["test_date"]);
date_add($date, date_interval_create_from_date_string(" +" . $noofdays . " days"));
echo date_format($date, "d-M-y");

更新: 如果您已有日期对象,则可以跳过date_create步骤,代码将类似于:

date_add($res["test_date"], date_interval_create_from_date_string(" +" . $noofdays . " days"));
echo date_format($date, "d-M-y");

答案 1 :(得分:0)

如果要以字符串形式检索日期和时间类型(datetime,date,time,datetime2和datetimeoffset),则可以使用以下选项:

将连接选项ReturnDatesAsStrings设置为false并格式化返回的日期字段值。这是默认设置。

$server = 'server\instance,port';
$cinfo = array(
    "ReturnDatesAsStrings"=>false,
    "Database"=>'database',
    "UID"=>"user",
    "PWD"=>"password"
);
...
$test2_date = date_format(date_add($res["test_date"], date_interval_create_from_date_string($noofdays." days")), 'd-M-y')
...

将连接选项ReturnDatesAsStrings设置为true

$server = 'server\instance,port';
$cinfo = array(
    "ReturnDatesAsStrings"=>true,
    "Database"=>'database',
    "UID"=>"user",
    "PWD"=>"password"
);
...
$test2_date = date_format(date_add(date_create($res["test_date"]), date_interval_create_from_date_string($noofdays." days")), 'd-M-y')
...

可以找到其他信息here