Добавление дней к дате, возвращаемой через sqlsrv_fetch_array в PHP - PullRequest
0 голосов
/ 29 июня 2018

Изначально, когда я использовал расширение 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 не работает и, следовательно, я получаю следующую ошибку: -

Исправляемая фатальная ошибка: не удалось преобразовать объект класса DateTime в строку.

что я должен использовать, чтобы добавить дни к дате?

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Если вы хотите получить типы даты и времени (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')
...

Дополнительную информацию можно найти здесь .

0 голосов
/ 29 июня 2018

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");

UPDATE: Если у вас уже есть объект даты, то шаг date_create можно пропустить и код будет выглядеть так:

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