Solidity的默认时间单位是秒(seconds
),在时间单位之间,数字后面带有 seconds
、 minutes
、 hours
、 days
和 weeks
的可以进行换算,基本换算关系如下:
1 == 1 seconds
1 minutes == 60 seconds
1 hours == 60 minutes
1 days == 24 hours
1 weeks == 7 days
由于闰秒造成的每年不都是 365 天、每天不都是 24 小时 ,所以如果你要使用这些单位计算日期和时间,请注意这个问题。因为闰秒是无法预测的,所以需要借助外部的预言机(oracle,是一种链外数据服务)来对一个确定的日期代码库进行时间矫正。
注意:
years
已经在 0.5.0 版本去除了,因为闰年的原因。
这些后缀不能直接用在变量后边。如果想用时间单位(例如 days
)来将输入变量换算为时间,你可以用如下方式来完成:
function f(uint start, uint daysAfter) public {
if (block.timestamp >= start + daysAfter * 1 days) {
// ...
}
}