Il formato u è massimo lungo 8 cifre indica microsecondi da php 5.0.0 strtotime sono stati aggiunti mentre date accetta numeri interi mentre in DateTime esiste da php 5.2.2 . Esiste un bug inferiore a php 7.2 che non recupera i microsecondi se il locale usa la virgola per numeri in virgola mobile come separatore decimale.
Se il formato u indica $date = new DateTime('2020-01-01 00:00:00.000000 Europe/Rome'); //6 cifre con zero
msec 6 indica 006 le prime tre cifre mentre i centesimi usec 6 indica 006. (Guarda il mio esempio uso il formato u, usec etc).
Con la funzione modify se il numero è negativo fai la sottrazione altrimenti la somma.