Один из способов сделать это - принудительно вычислить микросекунды, предполагая, что у вас отрицательная временная метка:
$date = DateTime::createFromFormat('U', '-128649659');
$ms = (1000000-999998);
echo $date->modify("-1 second +$ms microsecond")->format('Y-m-d H:i:s.u U.u');
1965-12-03 23:59:00.000002 -128649660.000002
Таким образом, вначале вы игнорируете сначала часть микросекунд.Во второй момент вы выполняете расчет только части микросекунд.
Если вы сделаете заметку, то часть U.u
будет неправильной, поэтому в этом случае она не будет использоваться.
Не уверен, что это будет работать для каждого сценария, любое предложение будет с благодарностью принято.