* implement AddMonths(...) and AddYears(...) functions

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27255 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Karsten Heimrich 2008-08-31 15:37:37 +00:00
parent 9309ec8635
commit 870f6b196f
2 changed files with 44 additions and 1 deletions

View File

@ -50,8 +50,10 @@ class BDate {
static BDate CurrentDate(time_type type);
bool SetDate(int32 year, int32 month, int32 day);
void AddDays(int32 days);
void AddYears(int32 years);
void AddMonths(int32 months);
int32 Day() const;
int32 Year() const;

View File

@ -202,6 +202,47 @@ BDate::AddDays(int32 days)
}
void
BDate::AddYears(int32 years)
{
fYear += years;
fDay = min_c(fDay, DaysInMonth());
}
void
BDate::AddMonths(int32 months)
{
if (months == 0)
return;
if (months > 0) {
while (months > 0) {
fYear++;
months -= 12;
}
fMonth += months;
if (fMonth < 1) {
fYear--;
fMonth += 12;
}
} else {
while (months < 0) {
fYear--;
months += 12;
}
fMonth += months;
if (fMonth > 12) {
fYear++;
fMonth -= 12;
}
}
fDay = min_c(fDay, DaysInMonth());
}
int32
BDate::Day() const
{