Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions contracts/DateTime.sol
Original file line number Diff line number Diff line change
Expand Up @@ -213,4 +213,62 @@ contract DateTime {

return timestamp;
}

function addYears(uint timestamp, uint16 addingYears) public pure returns (uint) {
uint16 year = getYear(timestamp);
for (uint16 i = 1; i < addingYears; ++i)
{
++year;
if (isLeapYear(year))
timestamp += LEAP_YEAR_IN_SECONDS;
else
timestamp += YEAR_IN_SECONDS;
}
return timestamp;
}

function addMonths(uint timestamp, uint16 addingMonths) public pure returns (uint) {
uint8 month = getMonth(timestamp);
uint16 year = getYear(timestamp);
for (uint16 i = 1; i < addingMonths; ++i)
{
++month;
timestamp += DAY_IN_SECONDS * getDaysInMonth(month, year);
}
return timestamp;
}

function addDays(uint timestamp, uint16 addingDays) public pure returns (uint) {
timestamp += addingDays * DAY_IN_SECONDS;
return timestamp;
}

function subYears(uint timestamp, uint16 subtractingYears) public pure returns (uint) {
uint16 year = getYear(timestamp);
for (uint16 i = 1; i < subtractingYears; ++i)
{
--year;
if (isLeapYear(year))
timestamp -= LEAP_YEAR_IN_SECONDS;
else
timestamp -= YEAR_IN_SECONDS;
}
return timestamp;
}

function subMonths(uint timestamp, uint16 subtractingMonths) public pure returns (uint) {
uint8 month = getMonth(timestamp);
uint16 year = getYear(timestamp);
for (uint16 i = 1; i < subtractingMonths; ++i)
{
--month;
timestamp -= DAY_IN_SECONDS * getDaysInMonth(month, year);
}
return timestamp;
}

function subDays(uint timestamp, uint16 subtractingDays) public pure returns (uint) {
timestamp -= subtractingDays * DAY_IN_SECONDS;
return timestamp;
}
}
6 changes: 6 additions & 0 deletions contracts/api.sol
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,11 @@ contract DateTimeAPI {
function toTimestamp(uint16 year, uint8 month, uint8 day, uint8 hour) constant returns (uint timestamp);
function toTimestamp(uint16 year, uint8 month, uint8 day, uint8 hour, uint8 minute) constant returns (uint timestamp);
function toTimestamp(uint16 year, uint8 month, uint8 day, uint8 hour, uint8 minute, uint8 second) constant returns (uint timestamp);
function addYears(uint timestamp, uint16 addingYears) public pure returns (uint);
function addMonths(uint timestamp, uint16 addingMonths) public pure returns (uint);
function addDays(uint timestamp, uint16 addingDays) public pure returns (uint);
function subYears(uint timestamp, uint16 subtractingYears) public pure returns (uint);
function subMonths(uint timestamp, uint16 subtractingMonths) public pure returns (uint);
function subDays(uint timestamp, uint16 subtractingDays) public pure returns (uint);
}