From PHP 5.5 onwards there's DateTimeImmutable which implements the same DateTimeInterface as DateTime and thus should be interchangeable in implementations. The DateTimeImmutable returns new instances with the requested changes when calling modifying functions like modify.
When creating a DateTime instance for the current moment in time (e.g. with the string now) the precision is seconds. Unix timestamp might help. Another option to create a valid NOW value is:
$dti = DateTimeImmutable::createFromFormat('U.u', sprintf('%.6F', microtime(true)));