$currentDT = new \DateTime();
$filterRange = new \DateInterval('PT30S');
$filterDate = $currentDT->sub($filterRange);
var_dump($currentDT);
var_dump($filterDate);
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
object(DateTime)[246]
public 'date' => string '2011-12-10 15:53:42' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'America/New_York' (length=16)
object(DateTime)[246]
public 'date' => string '2011-12-10 15:53:42' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'America/New_York' (length=16)
Run Code Online (Sandbox Code Playgroud)
$ currentDT和$ filterDate是相同的...即使它们应该是30s不同.知道为什么吗?
这是预期的行为,减法作用于原始对象,然后返回.这可以通过可见246的var_dump()输出,表示他们是同一个对象.
如果您希望保持原始物体不变,clone则在进行减法之前需要进行此操作.
$currentDT = new \DateTime('2011-12-13 14:15:16');
$filterRange = new \DateInterval('PT30S');
$filterDate = clone $currentDT;
$filterDate->sub($filterRange);
var_dump($currentDT, $filterDate);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
866 次 |
| 最近记录: |