Solidez - función "ahora" resultado

Me gustaría saber qué tipo de formato devuelve la función now.

Llamo a esta función en un contrato y envío el resultado como un evento a mi archivo .js. La estructura que veo es así:

función de salida "ahora"

Me gustaría comparar esta vez con el obtenido con new Date().getTime();javascript, pero no sé el significado de "c,e,s" y no estoy seguro si es el mismo tipo de formato (la longitud del número de resultado es diferente ) o debo manejarlo primero. En ese caso, ¿cómo podría modificarlo?

Respuestas (1)

Supongo que estás usando web3.js. El tipo de valores numéricos devueltos por un contrato es BNo BigNumber, según la versión de web3.js.

En ambos casos, .toString()le dará una representación de cadena del número y .toNumber()le dará un número, ¡pero tenga cuidado con la precisión! JavaScript no puede manejar con seguridad números mayores de 2 53 -1.

Para una marca de tiempo, debería estar bien simplemente usando .toNumber().

Porque nowprobablemente sea lo mismo, pero en términos generales, toFixedda "mejores resultados" que toString(mejor en el hecho de que siempre obtiene una cadena en formato claro).
Cuando aplico toNumber()obtengo 1535277654(el argumento "c" en la imagen), pero cuando aplico new Date().getTime()el resultado es 1535277681189. Tienen diferente tamaño, por lo que no puedo manejarlos correctamente. ¿Cuál es la diferencia? ¿Hay alguna manera de obtener la misma longitud? @smarx
La marca de tiempo del bloque está en segundos desde la época de Unix. Las marcas de tiempo de JavaScript están en milisegundos desde la época de Unix. Simplemente divida la marca de tiempo de JavaScript por 1,000. ej Math.floor(new Date() / 1000).