Я хотел бы, чтобы вы знали, какой формат возвращает функция now
.
Я вызываю эту функцию в контракте и отправляю результат как событие в свой файл .js. Структура, которую я вижу, выглядит так:
Я хотел бы сравнить это время с полученным new Date().getTime();
в javascript, но я не знаю значения «c, e, s» и я не уверен, что это тот же формат (длина числа результата отличается ), или я должен сначала справиться с этим. В этом случае, как я могу изменить его?
Я предполагаю, что вы используете web3.js. Тип числовых значений, возвращаемых контрактом, — BN
или BigNumber
, в зависимости от версии web3.js.
В обоих случаях .toString()
вы получите строковое представление числа и .toNumber()
выдаст вам число, но будьте осторожны с точностью! JavaScript не может безопасно обрабатывать числа больше 2 53 -1.
Для метки времени вы должны быть в порядке, просто используя .toNumber()
.
хорошая вибрация
now
это, вероятно, то же самое, но вообще говоря,toFixed
дает "лучшие результаты", чемtoString
(лучше тем, что вы всегда получаете строку в чистом формате).сапиенсапиенс
toNumber()
, я получаю1535277654
(аргумент «c» на изображении), но когда я применяюnew Date().getTime()
результат1535277681189
. Они имеют разный размер, поэтому я не могу ими правильно управлять. В чем разница? Есть ли способ получить ту же длину? @smarxпользователь19510
Math.floor(new Date() / 1000)
.