Solidity 中的时间

Solidity 中的时间 now 并非当前时间, 是上一个区块被挖的时间, 单位为秒的时间戳(是10位 int 值).

因为代表的是上一个区块被挖的时间, 所以在一段时间内, now 执行结果相同.

now 的类型为 uint256, 但是做比较的话, uint32 就已经足够存储时间戳.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
pragma solidity ^0.4.0;

contract RealTime {
event LogEventOpen(bool isFinished);

// now is of type uint256
function nowInSenconds() public view returns (uint256) {
return now;
}

function getStatus(uint32 endTime, uint16 delayDays) public {
if (now > endTime + delayDays * 1 days) {
emit LogEventOpen(false);
} else {
emit LogEventOpen(true);
}
}
}

参考: http://www.tryblockchain.org/Solidity-TimeUnits-%E6%97%B6%E9%97%B4%E5%8D%95%E4%BD%8D.html

Donate - Support to make this site better.
捐助 - 支持我让我做得更好.