当我向日期时间添加间隔时,PHP似乎会更改其他日期时间变量。为什么?

时间:2018-08-10 19:15:18

标签: php datetime datetime-format

我真的不知道该怎么问。

我将相同的日期保存在两个变量中。 然后,我将100天添加到第二个变量中。 但是两者似乎都被改变了。为什么会这样呢?

$begin = new DateTime("20180101");
$end = $begin;
$end = $end->add(new DateInterval('P100D'));

echo $begin->format('Y-m-d') . "<br>";
echo $end->format('Y-m-d');

结果是:

  

2018-04-11

     

2018-04-11

但我希望:

  

2018-01-01

     

2018-04-11

1 个答案:

答案 0 :(得分:2)

如果您希望使用同一DateTime对象拥有不同的日子,则必须执行以下操作:

mock_method('an', 'example')

原因:PHP通过引用使用同一对象... 如果您通过新的DateTime('pattern')创建两个不同的对象DateTime,它将表现得很好。

您现在看到的行为也可以这样观察:

List<SevenZMethodConfiguration> methods = new ArrayList<>();

LZMA2Options lzma2Options = new LZMA2Options();
lzma2Options.setPreset(LZMA2Options.PRESET_MAX);
SevenZMethodConfiguration lzmaConfig =
        new SevenZMethodConfiguration(SevenZMethod.LZMA, lzma2Options);
methods.add(lzmaConfig);
out.setContentMethods(methods);