time() в секундах – есть ли один миллисекунды? 
Короткий ответ :
 $milliseconds = round(microtime(true) * 1000); 
  Используйте microtime() .  Эта функция возвращает строку, разделенную пробелом.  Первая часть – дробная часть секунд, вторая часть – неотъемлемая часть.  Перейдите в true чтобы получить как число: 
 var_dump(microtime()); // string(21) "0.89115400 1283846202" var_dump(microtime(true)); // float(1283846202.89) 
  Остерегайтесь прецизионных потерь, если вы используете microtime(true) . 
  Существует также gettimeofday() который возвращает часть микросекунды как целое число. 
 var_dump(gettimeofday()); /* array(4) { ["sec"]=> int(1283846202) ["usec"]=> int(891199) ["minuteswest"]=> int(-60) ["dsttime"]=> int(1) } */ 
  Как и другие, вы можете использовать microtime() для получения миллисекундной точности на microtime() времени. 
  Из ваших комментариев вы, похоже, хотите, чтобы это была высокоточная отметка времени UNIX.  Что-то вроде DateTime.Now.Ticks в мире .NET. 
Для этого вы можете использовать следующую функцию:
 function millitime() { $microtime = microtime(); $comps = explode(' ', $microtime); // Note: Using a string here to prevent loss of precision // in case of "overflow" (PHP converts it to a double) return sprintf('%d%03d', $comps[1], $comps[0] * 1000); } 
Короткий ответ:
Только 64-битные платформы!
 function milliseconds() { $mt = explode(' ', microtime()); return ((int)$mt[1]) * 1000 + ((int)round($mt[0] * 1000)); } 
Длительный ответ:
  Если вы хотите получить эквивалентную функцию time() в миллисекундах, сначала нужно учитывать, что по мере того, как time() возвращает количество секунд, прошедших со времени «эпохи» (01/01/1970), количество миллисекунд с «эпохи» time "является большим числом и не вписывается в 32-битное целое число. 
Размер целого числа в PHP может быть 32 или 64 бит в зависимости от платформы.
С http://php.net/manual/en/language.types.integer.php
Размер целого зависит от платформы, хотя максимальное значение около двух миллиардов – это обычное значение (это 32 бита). 64-разрядные платформы обычно имеют максимальное значение около 9E18, за исключением Windows, которая всегда 32 бит. PHP не поддерживает целые числа без знака. Целочисленный размер может быть определен с использованием константы PHP_INT_SIZE и максимального значения с использованием константы PHP_INT_MAX с PHP 4.4.0 и PHP 5.0.5.
Если у вас есть 64-битные целые числа, вы можете использовать следующую функцию:
 function milliseconds() { $mt = explode(' ', microtime()); return ((int)$mt[1]) * 1000 + ((int)round($mt[0] * 1000)); } 
  microtime() возвращает количество секунд с момента «эпохи» с точностью до микросекунд с двумя номерами, разделенными пробелом, например … 
 0.90441300 1409263371 
Второе число – это секунда (целое число), предшествующее десятичной части.
  Функция milliseconds принимает целочисленную часть, умноженную на 1000 
 1409263371000 
  и добавляет десятичную часть, умноженную на 1000 и округленную до 0 десятичных знаков 
 1409263371904 
  Обратите внимание, что как $mt[1] и результат round выдаются в int .  Это необходимо, потому что они являются float и операция над ними без кастинга приведет к возврату функции float . 
Наконец, эта функция несколько точнее, чем
 round(microtime(true)*1000); 
  что с отношением 1:10 (приблизительно) возвращает на 1 миллисекунду больше, чем правильный результат.  Это связано с ограниченной точностью типа float ( microtime(true) возвращает float).  В любом случае, если вы по-прежнему предпочитаете более короткий round(microtime(true)*1000);  Я бы предложил лить в результат. 
Даже если это выходит за рамки вопроса, стоит упомянуть, что если ваша платформа поддерживает 64-битные целые числа, то вы также можете получить текущее время в микросекундах без переполнения.
  Если факт 2^63 (приблизительное наибольшее значащее целое число), деленное на 10^6 * 3600 * 24 * 365 (примерно на микросекунды через год), прибл.  292471 . 
  Это то же значение, возвращаемое echo PHP_INT_MAX / (1000000*3600*24*365); 
Другими словами, целое число со знаком имеет место для хранения временного интервала более 200000 лет, измеренного в микросекундах.
Тогда вы можете
 function microseconds() { $mt = explode(' ', microtime()); return ((int)$mt[1]) * 1000000 + ((int)round($mt[0] * 1000000)); } 
  Используйте microtime(true) в PHP 5 или следующую модификацию в PHP 4: 
 array_sum(explode(' ', microtime())); 
Портативный способ написать этот код:
 function getMicrotime() { if (version_compare(PHP_VERSION, '5.0.0', '<')) { return array_sum(explode(' ', microtime())); } return microtime(true); } 
попробуй это:
 public function getTimeToMicroseconds() { $t = microtime(true); $micro = sprintf("%06d", ($t - floor($t)) * 1000000); $d = new DateTime(date('Ymd H:i:s.' . $micro, $t)); return $d->format("Ymd H:i:su"); } 
 $timeparts = explode(" ",microtime()); $currenttime = bcadd(($timeparts[0]*1000),bcmul($timeparts[1],1000)); echo $currenttime; 
ПРИМЕЧАНИЕ. Для этой функции требуется PHP5 из-за улучшений с microtime (), а также необходим математический модуль bc (поскольку мы имеем дело с большими числами, вы можете проверить, есть ли у вас модуль в phpinfo).
Надеюсь, это поможет вам.
 echo date('Ymd H:i:s.') . gettimeofday()['usec']; 
вывод:
 2016-11-19 15:12:34.346351 
 $the_date_time = new DateTime($date_string); $the_date_time_in_ms = ($the_date_time->format('U') * 1000) + ($the_date_time->format('u') / 1000); 
Это работает, даже если вы на 32-битном PHP:
 list($msec, $sec) = explode(' ', microtime()); $time_milli = $sec.substr($msec, 2, 3); // '1491536422147' $time_micro = $sec.substr($msec, 2, 6); // '1491536422147300' 
Обратите внимание, что это не дает вам целые числа, а строки. Однако это хорошо работает во многих случаях, например, при создании URL-адресов для запросов REST.
Если вам нужны целые числа, требуется 64-битный PHP.
Затем вы можете повторно использовать приведенный выше код и использовать для (int):
 list($msec, $sec) = explode(' ', microtime()); // these parentheses are mandatory otherwise the precedence is wrong! // ↓ ↓ $time_milli = (int) ($sec.substr($msec, 2, 3)); // 1491536422147 $time_micro = (int) ($sec.substr($msec, 2, 6)); // 1491536422147300 
Или вы можете использовать хорошие оль-лайнеры:
 $time_milli = (int) round(microtime(true) * 1000); // 1491536422147 $time_micro = (int) round(microtime(true) * 1000000); // 1491536422147300 
Использовать это:
function get_millis(){ list($usec, $sec) = explode(' ', microtime()); return (int) ((int) $sec * 1000 + ((float) $usec * 1000)); }
до свидания