在 PHP 中向通过 sqlsrv_fetch_array 返回的日期添加天数
Adding Days to a date returned through sqlsrv_fetch_array in PHP
最初,当我使用 php_msssql 扩展程序时,以下行有效
$test2_date = date('d-M-y', strtotime( "".$res["test_date"]." +".$noofdays." days" ));
$res
是数组。
然后我更改为 php_sqlsrv_53_ts_vc9
扩展,由于上面的行无法工作,因为 "date" 在这个扩展中不起作用,所以我使用了 "date_format" 在 sqlsrv 中工作。我的代码行如下所示
$test2_date = date_format(strtotime( "".$res["test_date"]." +".$noofdays." days" ), 'd-M-y');
但是 strtotime 不工作,因此我得到以下错误:-
Catchable fatal error: Object of class DateTime could not be converted
to string.
我应该用什么来给日期加上天数?
date_format take date object as first parameter. So need to create date object with 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");
如果您想将日期和时间类型(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。
最初,当我使用 php_msssql 扩展程序时,以下行有效
$test2_date = date('d-M-y', strtotime( "".$res["test_date"]." +".$noofdays." days" ));
$res
是数组。
然后我更改为 php_sqlsrv_53_ts_vc9
扩展,由于上面的行无法工作,因为 "date" 在这个扩展中不起作用,所以我使用了 "date_format" 在 sqlsrv 中工作。我的代码行如下所示
$test2_date = date_format(strtotime( "".$res["test_date"]." +".$noofdays." days" ), 'd-M-y');
但是 strtotime 不工作,因此我得到以下错误:-
Catchable fatal error: Object of class DateTime could not be converted to string.
我应该用什么来给日期加上天数?
date_format take date object as first parameter. So need to create date object with 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");
如果您想将日期和时间类型(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。