Как можно вычесть миллисекунду из DateTime?

#php

#php

Вопрос:

Для данного кода

 $now = new DateTime('now', new DateTimeZone('Pacific/Auckland'));
// $oneMsAgo = ???

var_dump($now->format(DateTime::RFC3339_EXTENDED));
  

какой был бы надежный способ вычесть одну миллисекунду, чтобы получить другой DateTime объект?

Под «надежным» я подразумеваю — это должна быть действительная дата-время, которая учитывает все нюансы часового пояса и летнее время, как если бы вы вычитали секунду с помощью DateInterval('PT1S') .

Ответ №1:

Хорошо, отвечая на мой собственный вопрос

 $oneMsAgo = (clone $now)->setTime($now->format('H'), $now->format('i'), $now->format('s'), $now->format('u') - 1000);