Внутри приложения, которое я пишу, мне нужно установить / отобразить микровремя для объектов DateTime. Кажется, единственный способ заставить объект DateTime распознавать микросекунды - это инициализировать его временем в формате «ГГГГ-ММ-ДД ЧЧ: ММ: СС.уууууу». Пробел между частями даты и времени также может быть символом «Т», как обычно в формате ISO8601.
Следующая функция возвращает объект DateTime, инициализированный в местном часовом поясе (код, конечно, может быть изменен в соответствии с индивидуальными потребностями):
// Return DateTime object including microtime for "now"
function dto_now()
{
list($usec, $sec) = explode(' ', microtime());
$usec = substr($usec, 2, 6);
$datetime_now = date('Y-m-d H:i:s\.', $sec).$usec;
return new DateTime($datetime_now, new DateTimeZone(date_default_timezone_get()));
}