Микросекунды в PHP - PullRequest
       2

Микросекунды в PHP

2 голосов
/ 19 января 2011

Я обращаюсь к API, который требует метки времени в микросекундах, я могу напечатать значение, и оно работает, оно печатает это:

1295308800

Итак, я подумал, что могу умножить это на 1000, а затем распечатать, но когда я печатаю запрос перед отправкой (используя CURL), он печатает это:

1.2953088E+12

Могу ли я использовать другой тип переменной или что-то еще?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 19 января 2011

Если вы отправляете значение таким образом, что PHP преобразует его в синтаксис экспоненты (т. Е. 1.2953088E + 12), есть хитрый прием, который вы можете сделать, используя printf или sprintf, чтобы получить полное число):

php -r '$date = 12434613435134661234; echo $date;'
1.2434613435135E+19

php -r '$date = 12434613435134661234; printf("%.0f", $date);'
12434613435134660608

Затем можно использовать sprintf, чтобы просто присвоить этот номер переменной (в виде строки) и передать его в удаленный API.

Обратите внимание на отсутствие точностиот преобразования числа с плавающей запятой, однако.

Edit :

Я также хочу отметить, что десятичные числа без знака в PHP выглядят точными до 19 мест.Таким образом, это возвращает правильное значение:

php -r '$date = 6243461343513466123; printf("%u", $date);'
6243461343513466123

При выражении того же значения, что и число с плавающей точкой, оно теряет свою точность:

php -r '$date = 6243461343513466123; printf("%.0f", $date);'
6243461343513465856
1 голос
/ 19 января 2011

PHP имеет встроенную функцию microtime() ...

http://php.net/manual/en/function.microtime.php

В зависимости от того, что именно вы пытаетесь сделать, это может вам пригодиться.

Вот сообщение StackOverflow, касающееся микровремени

php микросекунд

Если вы ищете микросекунды определенной временной отметки, то посмотрите u Формат символов здесь: http://no.php.net/manual/en/function.date.php

...