Modify microseconds of a PHP DateTime object



PHP Snippet 1:

$dt = new DateTime('2020-01-01 0:00');
$dt->modify('+500 ms'); // Milliseconds.
$dt->modify('+123456 usec'); // Microseconds.
$dt->modify('+123456 microseconds'); // This works too.

PHP Snippet 2:

$d = new DateTime("15-07-2014 18:30:00.111111");

PHP Snippet 3:

$d = date_format(new DateTime(),'d-m-Y H:i:s').substr((string)microtime(), 1, 8);

PHP Snippet 4:

//Returns the difference, in seconds, between two datetime objects including
//the microseconds:

function mdiff($date1, $date2){
    $date1sec = strtotime($date1->format('d-m-Y H:i:s.u'));
    $date2sec = strtotime($date2->format('d-m-Y H:i:s.u'));
    //Absolute val of Date 1 in seconds from  (EPOCH Time) - Date 2 in seconds from (EPOCH Time)
    $secdiff = abs($date1sec-$date2sec);
    //Creates variables for the microseconds of date1 and date2
    $micro1 = $date1->format("u");
    $micro2 = $date2->format("u");

    if (($date1sec<$date2sec && $micro1>$micro2)||($date1sec>$date2sec && $micro1<$micro2)){
        $microdiff = abs(1000000 - abs($micro1-$micro2));
        $secdiff = $secdiff - 1;
    } else {
        $microdiff = abs($micro1 - $micro2);
    }

    //Creates the variable that will hold the seconds (?):
    $difference = $secdiff.".".$microdiff;
    return $difference;
}