如何显示区块链合约调用的时间?

时间:2019-04-19 05:29:32

标签: reactjs ethereum solidity

我想显示区块链合约调用的时间。

我目前正在使用这种方法在区块链中节省时间

function userCheckIn(uint placeid) public {
    userCount++;
    checkins[userCount] = Checkin(placeid, msg.sender, now);
} 

但是,now这样在前端显示随机数

1555650125
1555651118

请给我任何建议吗?

非常感谢您。

2 个答案:

答案 0 :(得分:2)

时间戳似乎正确。在大多数编程语言和计算机系统中,时间存储为时间戳记,并存储在纪元(unix时间戳记)中。这些是大(长)数字,代表从某些指定的预定义时间开始的秒数。

要将此时间戳记转换为人类可读的时间,可以使用任何在其构造函数中带有时间戳记的库。

// Create a new JavaScript Date object based on the timestamp
// multiplied by 1000 so that the argument is in milliseconds, not seconds.
var date = new Date(unix_timestamp*1000);

// Hours part from the timestamp
var hours = date.getHours();

// Minutes part from the timestamp
var minutes = "0" + date.getMinutes();

// Seconds part from the timestamp
var seconds = "0" + date.getSeconds();

// Will display time in 10:30:23 format
var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);

有关更多详细信息,请参考此post

答案 1 :(得分:0)

这些不是随机数。这些是时间戳记,它们代表自1970年1月1日以来经过的毫秒数。要提取日期,您需要执行以下操作:

function userCheckIn(uint placeid) public {
     userCount++;
     checkins[userCount] = Checkin(placeid, msg.sender, new Date(now) );
} 

由于now为您提供了前端的有效时间戳,所以new Date(now)可以轻松为您提供时间和日期。如果要按月,日间等进一步细化此日期,而不是使用默认的js方法,则可以查找momentJS library