尝试向DateTime对象添加DateInterval时出现PHP致命错误
我做错了什么 PHP致命错误:对中的非对象调用成员函数add()尝试向DateTime对象添加DateInterval时出现PHP致命错误,php,datetime,add,dateinterval,Php,Datetime,Add,Dateinterval,我做错了什么 PHP致命错误:对中的非对象调用成员函数add() $rndM = rand(48,51); $rndS = rand(1,59); $ts = new DateTime($krow['GLSTRT']); $tsd = $ts->format('Y-m-d H:i:s'); $tsup = 'PT'.$rndM.'i'.$rndS.'s'; $lamDate= $tsd->add(new DateInterval('\'
$rndM = rand(48,51);
$rndS = rand(1,59);
$ts = new DateTime($krow['GLSTRT']);
$tsd = $ts->format('Y-m-d H:i:s');
$tsup = 'PT'.$rndM.'i'.$rndS.'s';
$lamDate= $tsd->add(new DateInterval('\''.$tsup.'\''));
$krow['GLSTRT']
是来自MSSQL的数据值
起初,我在add(newdateinterval)
中遇到格式错误
我添加了格式行,解决了格式错误,现在add(newdateinterval)
在本文开头抛出了错误。有几件事:
返回字符串,因此不能对结果使用format()
,因为它不是对象。您需要add()
$ts->add()
- 您应该检查
构造函数的正确语法;至少你需要去掉字符串周围的引号DateInterval
- 当您使用
方法时,您会修改您的对象,因此将其分配给另一个变量是毫无意义的,除非您首先克隆它。现在,add()
(参见我的第一点)和$ts
都将引用同一个对象$lamDate
具有以下方法签名:DateTime->format()
。它返回一个字符串公共字符串格式(string$格式)
- 您不需要重新分配DataTime对象来使用它
我对代码的顺序和变量名做了一些修改,以使事情更清楚:
// create new datetime object and return formatted date
$date = new DateTime($krow['GLSTRT']);
echo $date->format('Y-m-d H:i:s') . "\n";
// define interval string and create a new DateInterval object
$rndM = rand(48,51);
$rndS = rand(1,59);
$intervalString = 'PT' . $rndM . 'i' . $rndS . 's';
$intervalObject = new DateInterval($intervalString);
// add interval to date object
$date ->add($intervalObject);
// return the modified value formatted
echo $date->format('Y-m-d H:i:s') . "\n";
:邦海德:谢谢你们。这就是我匆匆忙忙忙忙得到的。这是最终产品
$ts = new DateTime($krow['GLSTRT']);
$intervalString = 'PT' . $rndM . 'M' . $rndS . 'S';
$ts ->add(new DateInterval($intervalString));
$lamDate = $ts->format('Y-m-d H:i:s');