ETH Price: $2,733.03 (+6.94%)
Gas: 3 Gwei

Contract

0x1a6184CD4C5Bea62B0116de7962EE7315B7bcBce
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
__throw197028822024-04-21 9:27:47113 days ago1713691667IN
0x1a6184CD...15B7bcBce
0 ETH0.000189578.03314945
0x606060403432482015-10-06 16:34:363233 days ago1444149276IN
 Create: DateTime
0 ETH0.0260750

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DateTime

Compiler Version
v0.1.3+commit.28f561

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-01-09
*/

contract DateTime {
        /*
         *  Date and Time utilities for ethereum contracts
         *
         *  address: 0x1a6184cd4c5bea62b0116de7962ee7315b7bcbce
         */
        struct DateTime {
                uint16 year;
                uint8 month;
                uint8 day;
                uint8 hour;
                uint8 minute;
                uint8 second;
                uint8 weekday;
        }

        uint constant DAY_IN_SECONDS = 86400;
        uint constant YEAR_IN_SECONDS = 31536000;
        uint constant LEAP_YEAR_IN_SECONDS = 31622400;

        uint constant HOUR_IN_SECONDS = 3600;
        uint constant MINUTE_IN_SECONDS = 60;

        uint16 constant ORIGIN_YEAR = 1970;

        function isLeapYear(uint16 year) constant returns (bool) {
                if (year % 4 != 0) {
                        return false;
                }
                if (year % 100 != 0) {
                        return true;
                }
                if (year % 400 != 0) {
                        return false;
                }
                return true;
        }

        function parseTimestamp(uint timestamp) internal returns (DateTime dt) {
                uint secondsAccountedFor = 0;
                uint buf;
                uint8 i;

                dt.year = ORIGIN_YEAR;

                // Year
                while (true) {
                        if (isLeapYear(dt.year)) {
                                buf = LEAP_YEAR_IN_SECONDS;
                        }
                        else {
                                buf = YEAR_IN_SECONDS;
                        }

                        if (secondsAccountedFor + buf > timestamp) {
                                break;
                        }
                        dt.year += 1;
                        secondsAccountedFor += buf;
                }

                // Month
                uint8[12] monthDayCounts;
                monthDayCounts[0] = 31;
                if (isLeapYear(dt.year)) {
                        monthDayCounts[1] = 29;
                }
                else {
                        monthDayCounts[1] = 28;
                }
                monthDayCounts[2] = 31;
                monthDayCounts[3] = 30;
                monthDayCounts[4] = 31;
                monthDayCounts[5] = 30;
                monthDayCounts[6] = 31;
                monthDayCounts[7] = 31;
                monthDayCounts[8] = 30;
                monthDayCounts[9] = 31;
                monthDayCounts[10] = 30;
                monthDayCounts[11] = 31;

                uint secondsInMonth;
                for (i = 0; i < monthDayCounts.length; i++) {
                        secondsInMonth = DAY_IN_SECONDS * monthDayCounts[i];
                        if (secondsInMonth + secondsAccountedFor > timestamp) {
                                dt.month = i + 1;
                                break;
                        }
                        secondsAccountedFor += secondsInMonth;
                }

                // Day
                for (i = 0; i < monthDayCounts[dt.month - 1]; i++) {
                        if (DAY_IN_SECONDS + secondsAccountedFor > timestamp) {
                                dt.day = i + 1;
                                break;
                        }
                        secondsAccountedFor += DAY_IN_SECONDS;
                }

                // Hour
                for (i = 0; i < 24; i++) {
                        if (HOUR_IN_SECONDS + secondsAccountedFor > timestamp) {
                                dt.hour = i;
                                break;
                        }
                        secondsAccountedFor += HOUR_IN_SECONDS;
                }

                // Minute
                for (i = 0; i < 60; i++) {
                        if (MINUTE_IN_SECONDS + secondsAccountedFor > timestamp) {
                                dt.minute = i;
                                break;
                        }
                        secondsAccountedFor += MINUTE_IN_SECONDS;
                }

                if (timestamp - secondsAccountedFor > 60) {
                        __throw();
                }

                // Second
                dt.second = uint8(timestamp - secondsAccountedFor);

                // Day of week.
                buf = timestamp / DAY_IN_SECONDS;
                dt.weekday = uint8((buf + 3) % 7);
        }

        function getYear(uint timestamp) constant returns (uint16) {
                return parseTimestamp(timestamp).year;
        }

        function getMonth(uint timestamp) constant returns (uint16) {
                return parseTimestamp(timestamp).month;
        }

        function getDay(uint timestamp) constant returns (uint16) {
                return parseTimestamp(timestamp).day;
        }

        function getHour(uint timestamp) constant returns (uint16) {
                return parseTimestamp(timestamp).hour;
        }

        function getMinute(uint timestamp) constant returns (uint16) {
                return parseTimestamp(timestamp).minute;
        }

        function getSecond(uint timestamp) constant returns (uint16) {
                return parseTimestamp(timestamp).second;
        }

        function getWeekday(uint timestamp) constant returns (uint8) {
                return parseTimestamp(timestamp).weekday;
        }

        function toTimestamp(uint16 year, uint8 month, uint8 day) constant returns (uint timestamp) {
                return toTimestamp(year, month, day, 0, 0, 0);
        }

        function toTimestamp(uint16 year, uint8 month, uint8 day, uint8 hour) constant returns (uint timestamp) {
                return toTimestamp(year, month, day, hour, 0, 0);
        }

        function toTimestamp(uint16 year, uint8 month, uint8 day, uint8 hour, uint8 minute) constant returns (uint timestamp) {
                return toTimestamp(year, month, day, hour, minute, 0);
        }

        function toTimestamp(uint16 year, uint8 month, uint8 day, uint8 hour, uint8 minute, uint8 second) constant returns (uint timestamp) {
                uint16 i;

                // Year
                for (i = ORIGIN_YEAR; i < year; i++) {
                        if (isLeapYear(i)) {
                                timestamp += LEAP_YEAR_IN_SECONDS;
                        }
                        else {
                                timestamp += YEAR_IN_SECONDS;
                        }
                }

                // Month
                uint8[12] monthDayCounts;
                monthDayCounts[0] = 31;
                if (isLeapYear(year)) {
                        monthDayCounts[1] = 29;
                }
                else {
                        monthDayCounts[1] = 28;
                }
                monthDayCounts[2] = 31;
                monthDayCounts[3] = 30;
                monthDayCounts[4] = 31;
                monthDayCounts[5] = 30;
                monthDayCounts[6] = 31;
                monthDayCounts[7] = 31;
                monthDayCounts[8] = 30;
                monthDayCounts[9] = 31;
                monthDayCounts[10] = 30;
                monthDayCounts[11] = 31;

                for (i = 1; i < month; i++) {
                        timestamp += DAY_IN_SECONDS * monthDayCounts[i - 1];
                }

                // Day
                timestamp += DAY_IN_SECONDS * (day - 1);

                // Hour
                timestamp += HOUR_IN_SECONDS * (hour);

                // Minute
                timestamp += MINUTE_IN_SECONDS * (minute);

                // Second
                timestamp += second;

                return timestamp;
        }

        function __throw() {
                uint[] arst;
                arst[1];
        }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"timestamp","type":"uint256"}],"name":"getHour","outputs":[{"name":"","type":"uint16"}],"type":"function"},{"constant":true,"inputs":[{"name":"timestamp","type":"uint256"}],"name":"getWeekday","outputs":[{"name":"","type":"uint8"}],"type":"function"},{"constant":true,"inputs":[{"name":"year","type":"uint16"},{"name":"month","type":"uint8"},{"name":"day","type":"uint8"},{"name":"hour","type":"uint8"},{"name":"minute","type":"uint8"}],"name":"toTimestamp","outputs":[{"name":"timestamp","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"timestamp","type":"uint256"}],"name":"getDay","outputs":[{"name":"","type":"uint16"}],"type":"function"},{"constant":true,"inputs":[{"name":"year","type":"uint16"},{"name":"month","type":"uint8"},{"name":"day","type":"uint8"},{"name":"hour","type":"uint8"}],"name":"toTimestamp","outputs":[{"name":"timestamp","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"timestamp","type":"uint256"}],"name":"getSecond","outputs":[{"name":"","type":"uint16"}],"type":"function"},{"constant":true,"inputs":[{"name":"year","type":"uint16"},{"name":"month","type":"uint8"},{"name":"day","type":"uint8"}],"name":"toTimestamp","outputs":[{"name":"timestamp","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"year","type":"uint16"},{"name":"month","type":"uint8"},{"name":"day","type":"uint8"},{"name":"hour","type":"uint8"},{"name":"minute","type":"uint8"},{"name":"second","type":"uint8"}],"name":"toTimestamp","outputs":[{"name":"timestamp","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"timestamp","type":"uint256"}],"name":"getYear","outputs":[{"name":"","type":"uint16"}],"type":"function"},{"constant":true,"inputs":[{"name":"timestamp","type":"uint256"}],"name":"getMonth","outputs":[{"name":"","type":"uint16"}],"type":"function"},{"constant":true,"inputs":[{"name":"year","type":"uint16"}],"name":"isLeapYear","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[],"name":"__throw","outputs":[],"type":"function"},{"constant":true,"inputs":[{"name":"timestamp","type":"uint256"}],"name":"getMinute","outputs":[{"name":"","type":"uint16"}],"type":"function"}]

6060604052610792806100126000396000f3606060405236156100a35760e060020a60003504633e239e1a81146100a55780634ac1ad78146100fd57806362ba96871461010e57806365c72840146101315780637f791833146101425780638aa001fc146101635780638c8d98a0146101745780639054bdec1461019357806392d66313146101c9578063a324ad24146101da578063a6f0e577146101eb578063e1041d861461020e578063fa93f88314610226575b005b61023760043560006102e0825b6040805160e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081018290526107b2815290808080805b8551610504906101f2565b61024f600435600061030a826100b2565b6102666004356024356044356064356084356000610326868686868660006101a9565b61023760043560006102d2826100b2565b610266600435602435604435606435600061031d85858585600060006101a9565b61023760043560006102fc826100b2565b61026660043560243560443560006103158484846000600060006101a9565b61026660043560243560443560643560843560a4355b60006107b2815b8861ffff168261ffff16101561033057610344826101f2565b61023760043560006102bc826100b2565b61023760043560006102c4826100b2565b6102666004355b600060048261ffff160661ffff1660001415156102815761027c565b6100a35b600080600181548110156100025750508052565b61023760043560006102ee826100b2565b6040805161ffff929092168252519081900360200190f35b6040805160ff929092168252519081900360200190f35b60408051918252519081900360200190f35b5060015b919050565b60648261ffff160661ffff16600014151561029e5750600161027c565b6101908261ffff160661ffff1660001415156102785750600061027c565b51905061027c565b6020015160ff16905061027c565b6040015160ff16905061027c565b6060015160ff16905061027c565b6080015160ff16905061027c565b60a0015160ff16905061027c565b60c00151905061027c565b949350505050565b95945050505050565b9695505050505050565b805460ff1916601f17815561036e896101f2565b15610358576301e285009290920191610362565b6301e13380909201915b600191909101906101b0565b1561038557805461ff001916611d00178155610393565b805461ff001916611c001781555b805462ff00001916621f00001763ff0000001916631e0000001764ff000000001916641f000000001765ff00000000001916651e00000000001766ff0000000000001916661f0000000000001767ff000000000000001916671f000000000000001768ff00000000000000001916681e00000000000000001769ff0000000000000000001916691f000000000000000000176aff0000000000000000000019166a1e00000000000000000000176bff000000000000000000000019166b1f0000000000000000000000178155600191505b8760ff168261ffff1610156104ab578060018303600c811015610002576020808204909201549190066101000a900460ff1662015180029092019160019190910190610464565b505060ff918216928216603c02938216610e10026000199590950190911662015180020192909201010192915050565b6301e1338093505b868486011115610515575b815460ff1916601f1782558551610529906101f2565b156104db576301e2850093506104e3565b855160010161ffff168652938301936100f2565b1561054057815461ff001916611d0017825561054e565b815461ff001916611c001782555b815462ff00001916621f00001763ff0000001916631e0000001764ff000000001916641f000000001765ff00000000001916651e00000000001766ff0000000000001916661f0000000000001767ff000000000000001916671f000000000000001768ff00000000000000001916681e00000000000000001769ff0000000000000000001916691f000000000000000000176aff0000000000000000000019166a1e00000000000000000000176bff000000000000000000000019166b1f0000000000000000000000178255600092505b600c60ff8416101561066a578183600c811015610002576020808204909201549190066101000a900460ff16620151800290508085018790111561071b576001830160ff1660208701525b600092505b816001876020015103600c811015610002576020808204909201549190066101000a900460ff90811690841610156106bb5786856201518001111561072b576001830160ff1660408701525b600092505b60188360ff1610156106e2578685610e100111156107405760ff831660608701525b600092505b603c8360ff161015610708578685603c0111156107545760ff831660808701525b603c858803111561076757610767610212565b938401936001929092019161061f565b6201518094909401936001929092019161066f565b610e109490940193600192909201916106c0565b603c9490940193600192909201916106e7565b50505050820360ff90811660a08301526007620151809093046003019290920690911660c08201529056

Deployed Bytecode

0x606060405236156100a35760e060020a60003504633e239e1a81146100a55780634ac1ad78146100fd57806362ba96871461010e57806365c72840146101315780637f791833146101425780638aa001fc146101635780638c8d98a0146101745780639054bdec1461019357806392d66313146101c9578063a324ad24146101da578063a6f0e577146101eb578063e1041d861461020e578063fa93f88314610226575b005b61023760043560006102e0825b6040805160e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081018290526107b2815290808080805b8551610504906101f2565b61024f600435600061030a826100b2565b6102666004356024356044356064356084356000610326868686868660006101a9565b61023760043560006102d2826100b2565b610266600435602435604435606435600061031d85858585600060006101a9565b61023760043560006102fc826100b2565b61026660043560243560443560006103158484846000600060006101a9565b61026660043560243560443560643560843560a4355b60006107b2815b8861ffff168261ffff16101561033057610344826101f2565b61023760043560006102bc826100b2565b61023760043560006102c4826100b2565b6102666004355b600060048261ffff160661ffff1660001415156102815761027c565b6100a35b600080600181548110156100025750508052565b61023760043560006102ee826100b2565b6040805161ffff929092168252519081900360200190f35b6040805160ff929092168252519081900360200190f35b60408051918252519081900360200190f35b5060015b919050565b60648261ffff160661ffff16600014151561029e5750600161027c565b6101908261ffff160661ffff1660001415156102785750600061027c565b51905061027c565b6020015160ff16905061027c565b6040015160ff16905061027c565b6060015160ff16905061027c565b6080015160ff16905061027c565b60a0015160ff16905061027c565b60c00151905061027c565b949350505050565b95945050505050565b9695505050505050565b805460ff1916601f17815561036e896101f2565b15610358576301e285009290920191610362565b6301e13380909201915b600191909101906101b0565b1561038557805461ff001916611d00178155610393565b805461ff001916611c001781555b805462ff00001916621f00001763ff0000001916631e0000001764ff000000001916641f000000001765ff00000000001916651e00000000001766ff0000000000001916661f0000000000001767ff000000000000001916671f000000000000001768ff00000000000000001916681e00000000000000001769ff0000000000000000001916691f000000000000000000176aff0000000000000000000019166a1e00000000000000000000176bff000000000000000000000019166b1f0000000000000000000000178155600191505b8760ff168261ffff1610156104ab578060018303600c811015610002576020808204909201549190066101000a900460ff1662015180029092019160019190910190610464565b505060ff918216928216603c02938216610e10026000199590950190911662015180020192909201010192915050565b6301e1338093505b868486011115610515575b815460ff1916601f1782558551610529906101f2565b156104db576301e2850093506104e3565b855160010161ffff168652938301936100f2565b1561054057815461ff001916611d0017825561054e565b815461ff001916611c001782555b815462ff00001916621f00001763ff0000001916631e0000001764ff000000001916641f000000001765ff00000000001916651e00000000001766ff0000000000001916661f0000000000001767ff000000000000001916671f000000000000001768ff00000000000000001916681e00000000000000001769ff0000000000000000001916691f000000000000000000176aff0000000000000000000019166a1e00000000000000000000176bff000000000000000000000019166b1f0000000000000000000000178255600092505b600c60ff8416101561066a578183600c811015610002576020808204909201549190066101000a900460ff16620151800290508085018790111561071b576001830160ff1660208701525b600092505b816001876020015103600c811015610002576020808204909201549190066101000a900460ff90811690841610156106bb5786856201518001111561072b576001830160ff1660408701525b600092505b60188360ff1610156106e2578685610e100111156107405760ff831660608701525b600092505b603c8360ff161015610708578685603c0111156107545760ff831660808701525b603c858803111561076757610767610212565b938401936001929092019161061f565b6201518094909401936001929092019161066f565b610e109490940193600192909201916106c0565b603c9490940193600192909201916106e7565b50505050820360ff90811660a08301526007620151809093046003019290920690911660c08201529056

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.