【Solidity】現在日時を取得するには?

Solidityで現在日時を取得する方法について解説します。

構文

Solidityで現在日時を取得するには、block.timestampを使用します。

なお、現在日時は、UNIXタイムスタンプで返されます。

block.timestamp

時間単位も用意されており、それぞれ、以下のようになります。

サフィックス単位秒数
weeks60 * 60 * 24 * 7
days60 * 60 * 24
hours60 * 60
minutes60
seconds1
時間単位(Solidity)

サフィックスですが、こちらのように、“数字 + サフィックス”という形で記述します。

もちろん、足し算など四則演算することも可能です。

n weeks; n days; n hours; n minutes; n seconds;

サンプルコード

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract Test {

    function getCurrentTimestamp() public view returns(uint) {
        // 現在日時を取得(タイムスタンプ)
        return block.timestamp;
    }

    function getTotalTime() public pure returns(uint) {
        // 各時間単位を加算(秒)
        return 1 weeks + 1 days + 1 hours + 1 minutes + 1 seconds;
    }

    function hasExpired(uint timestamp) public view returns(bool) {
        // 1日が経過したかどうか
        return block.timestamp > timestamp + 1 days;
    }

}

以前よく使われていたnow関数は廃止になり今は使えませんのでご注意ください。

タイトルとURLをコピーしました