More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
DateTime
Compiler Version
v0.1.3+commit.28f561
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *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
- No Contract Security Audit Submitted- Submit Audit Here
[{"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"}]
Contract Creation Code
6060604052610792806100126000396000f3606060405236156100a35760e060020a60003504633e239e1a81146100a55780634ac1ad78146100fd57806362ba96871461010e57806365c72840146101315780637f791833146101425780638aa001fc146101635780638c8d98a0146101745780639054bdec1461019357806392d66313146101c9578063a324ad24146101da578063a6f0e577146101eb578063e1041d861461020e578063fa93f88314610226575b005b61023760043560006102e0825b6040805160e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081018290526107b2815290808080805b8551610504906101f2565b61024f600435600061030a826100b2565b6102666004356024356044356064356084356000610326868686868660006101a9565b61023760043560006102d2826100b2565b610266600435602435604435606435600061031d85858585600060006101a9565b61023760043560006102fc826100b2565b61026660043560243560443560006103158484846000600060006101a9565b61026660043560243560443560643560843560a4355b60006107b2815b8861ffff168261ffff16101561033057610344826101f2565b61023760043560006102bc826100b2565b61023760043560006102c4826100b2565b6102666004355b600060048261ffff160661ffff1660001415156102815761027c565b6100a35b600080600181548110156100025750508052565b61023760043560006102ee826100b2565b6040805161ffff929092168252519081900360200190f35b6040805160ff929092168252519081900360200190f35b60408051918252519081900360200190f35b5060015b919050565b60648261ffff160661ffff16600014151561029e5750600161027c565b6101908261ffff160661ffff1660001415156102785750600061027c565b51905061027c565b6020015160ff16905061027c565b6040015160ff16905061027c565b6060015160ff16905061027c565b6080015160ff16905061027c565b60a0015160ff16905061027c565b60c00151905061027c565b949350505050565b95945050505050565b9695505050505050565b805460ff1916601f17815561036e896101f2565b15610358576301e285009290920191610362565b6301e13380909201915b600191909101906101b0565b1561038557805461ff001916611d00178155610393565b805461ff001916611c001781555b805462ff00001916621f00001763ff0000001916631e0000001764ff000000001916641f000000001765ff00000000001916651e00000000001766ff0000000000001916661f0000000000001767ff000000000000001916671f000000000000001768ff00000000000000001916681e00000000000000001769ff0000000000000000001916691f000000000000000000176aff0000000000000000000019166a1e00000000000000000000176bff000000000000000000000019166b1f0000000000000000000000178155600191505b8760ff168261ffff1610156104ab578060018303600c811015610002576020808204909201549190066101000a900460ff1662015180029092019160019190910190610464565b505060ff918216928216603c02938216610e10026000199590950190911662015180020192909201010192915050565b6301e1338093505b868486011115610515575b815460ff1916601f1782558551610529906101f2565b156104db576301e2850093506104e3565b855160010161ffff168652938301936100f2565b1561054057815461ff001916611d0017825561054e565b815461ff001916611c001782555b815462ff00001916621f00001763ff0000001916631e0000001764ff000000001916641f000000001765ff00000000001916651e00000000001766ff0000000000001916661f0000000000001767ff000000000000001916671f000000000000001768ff00000000000000001916681e00000000000000001769ff0000000000000000001916691f000000000000000000176aff0000000000000000000019166a1e00000000000000000000176bff000000000000000000000019166b1f0000000000000000000000178255600092505b600c60ff8416101561066a578183600c811015610002576020808204909201549190066101000a900460ff16620151800290508085018790111561071b576001830160ff1660208701525b600092505b816001876020015103600c811015610002576020808204909201549190066101000a900460ff90811690841610156106bb5786856201518001111561072b576001830160ff1660408701525b600092505b60188360ff1610156106e2578685610e100111156107405760ff831660608701525b600092505b603c8360ff161015610708578685603c0111156107545760ff831660808701525b603c858803111561076757610767610212565b938401936001929092019161061f565b6201518094909401936001929092019161066f565b610e109490940193600192909201916106c0565b603c9490940193600192909201916106e7565b50505050820360ff90811660a08301526007620151809093046003019290920690911660c08201529056
Deployed Bytecode
0x606060405236156100a35760e060020a60003504633e239e1a81146100a55780634ac1ad78146100fd57806362ba96871461010e57806365c72840146101315780637f791833146101425780638aa001fc146101635780638c8d98a0146101745780639054bdec1461019357806392d66313146101c9578063a324ad24146101da578063a6f0e577146101eb578063e1041d861461020e578063fa93f88314610226575b005b61023760043560006102e0825b6040805160e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081018290526107b2815290808080805b8551610504906101f2565b61024f600435600061030a826100b2565b6102666004356024356044356064356084356000610326868686868660006101a9565b61023760043560006102d2826100b2565b610266600435602435604435606435600061031d85858585600060006101a9565b61023760043560006102fc826100b2565b61026660043560243560443560006103158484846000600060006101a9565b61026660043560243560443560643560843560a4355b60006107b2815b8861ffff168261ffff16101561033057610344826101f2565b61023760043560006102bc826100b2565b61023760043560006102c4826100b2565b6102666004355b600060048261ffff160661ffff1660001415156102815761027c565b6100a35b600080600181548110156100025750508052565b61023760043560006102ee826100b2565b6040805161ffff929092168252519081900360200190f35b6040805160ff929092168252519081900360200190f35b60408051918252519081900360200190f35b5060015b919050565b60648261ffff160661ffff16600014151561029e5750600161027c565b6101908261ffff160661ffff1660001415156102785750600061027c565b51905061027c565b6020015160ff16905061027c565b6040015160ff16905061027c565b6060015160ff16905061027c565b6080015160ff16905061027c565b60a0015160ff16905061027c565b60c00151905061027c565b949350505050565b95945050505050565b9695505050505050565b805460ff1916601f17815561036e896101f2565b15610358576301e285009290920191610362565b6301e13380909201915b600191909101906101b0565b1561038557805461ff001916611d00178155610393565b805461ff001916611c001781555b805462ff00001916621f00001763ff0000001916631e0000001764ff000000001916641f000000001765ff00000000001916651e00000000001766ff0000000000001916661f0000000000001767ff000000000000001916671f000000000000001768ff00000000000000001916681e00000000000000001769ff0000000000000000001916691f000000000000000000176aff0000000000000000000019166a1e00000000000000000000176bff000000000000000000000019166b1f0000000000000000000000178155600191505b8760ff168261ffff1610156104ab578060018303600c811015610002576020808204909201549190066101000a900460ff1662015180029092019160019190910190610464565b505060ff918216928216603c02938216610e10026000199590950190911662015180020192909201010192915050565b6301e1338093505b868486011115610515575b815460ff1916601f1782558551610529906101f2565b156104db576301e2850093506104e3565b855160010161ffff168652938301936100f2565b1561054057815461ff001916611d0017825561054e565b815461ff001916611c001782555b815462ff00001916621f00001763ff0000001916631e0000001764ff000000001916641f000000001765ff00000000001916651e00000000001766ff0000000000001916661f0000000000001767ff000000000000001916671f000000000000001768ff00000000000000001916681e00000000000000001769ff0000000000000000001916691f000000000000000000176aff0000000000000000000019166a1e00000000000000000000176bff000000000000000000000019166b1f0000000000000000000000178255600092505b600c60ff8416101561066a578183600c811015610002576020808204909201549190066101000a900460ff16620151800290508085018790111561071b576001830160ff1660208701525b600092505b816001876020015103600c811015610002576020808204909201549190066101000a900460ff90811690841610156106bb5786856201518001111561072b576001830160ff1660408701525b600092505b60188360ff1610156106e2578685610e100111156107405760ff831660608701525b600092505b603c8360ff161015610708578685603c0111156107545760ff831660808701525b603c858803111561076757610767610212565b938401936001929092019161061f565b6201518094909401936001929092019161066f565b610e109490940193600192909201916106c0565b603c9490940193600192909201916106e7565b50505050820360ff90811660a08301526007620151809093046003019290920690911660c08201529056
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.