最初,当我使用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无法正常工作,因此出现以下错误:-
可捕获的致命错误:日期时间类的对象无法转换 串起来。
我应该用什么来添加日期?
答案 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。