Solidity—更新已部署合约中的时间戳值



我有一个拍卖合同,它应该运行20分钟。

为了方便起见,我有一个auctionEndTime变量,我在constructor中初始化如下:

auctionEndTime = block.timestamp + 20 minutes;

但是如果我想通过增加一些额外的分钟来更新auctionEndTime呢?

我写了一个函数,可以让我传递我想要添加到auctionEndTime变量的额外分钟的值,如下所示:

function changeAuctionEndTime(uint extraTimeAmount) public {
require(msg.sender == contractOwner, "ONLY THE CONTRACT's OWNER CAN CALL THIS FUNCTION!");  
auctionEndTime += newEndTime minutes;  
}

但是这马上给了我以下错误:

Expected ';' but got 'minutes'

minutes这个词下面有一条弯弯曲曲的红线。所以它显然不喜欢这里的东西。(请注意,这个错误立即出现-在,它不像我编译并得到这个错误,而是我甚至不能编译和运行代码。)

这是怎么回事?我该如何解决这个问题?

  1. 您的变量是extraTimeAmount而不是newEndTime
  2. 文字之后的后缀如secondsminuteshoursdaysweeks数字可以用来指定时间单位。(来自官方文件).
  3. 所以你需要用extraTimeAmount * 1 minutes代替extraTimeAmount minutes

这是你的一段代码,将按照以上几点工作-

function changeAuctionEndTime(uint extraTimeAmount) public {
require(msg.sender == contractOwner, "ONLY THE CONTRACT's OWNER CAN CALL THIS FUNCTION!");  
auctionEndTime += extraTimeAmount * 1 minutes;  
}

最新更新