Штамп времени Unix и время JavaScript; слишком большой! - PullRequest
2 голосов
/ 17 апреля 2009

Я использую библиотеку графов flot для jQuery, и она использует время javascript для любого временного ряда (напомним, это миллисекунды с января 1970 года. Время Unix составляет секунд ).

Мой текущий код выглядит так:

foreach($decoded['results'] as $currentResult) {
         if($currentResult['from_user'] == $user) {
             $strippedTexts = $currentResult['created_at'];
             $dates []= strtotime($strippedTexts);
         }
    }

Это дает мне массив меток времени Unix. Я хочу подготовить данные для JavaScript в цикле, но при попытке

$dates []= 1000*strtotime($strippedTexts);

число слишком велико и оно выплевывает "[-2147483648]". Нужно ли мне менять «тип» переменной, разрешенной для хранения в массиве, на bignum или что-то еще?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 17 апреля 2009

Попробуйте это:

$dates []= 1000.0*strtotime($strippedTexts);

Это превратит его в float, который в php может хранить большее число, чем int.

2 голосов
/ 17 апреля 2009

Вы можете попробовать использовать функции BCMath Arbitrary Precision , если они доступны:

$dates[] = bcmul("1000", strtotime($strippedTexts));

Или просто, вы знаете, добавьте три нуля в конце.

$dates[] = strtotime($strippedTexts).'000';

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

0 голосов
/ 27 сентября 2009

Решение не требуется, потому что нет проблемы: умножьте JavaScript.

...