コード例 #1
0
DateTime operator+ (const DateTime& first, const YearMonthDuration& second)
{
    int year = first.Year();
    int month = first.Month() - 1;
    int day = first.Day();

    month += second.Months();

    int monthrem = month % 12;
    if (monthrem < 0)
    {
        monthrem += 12;
    }
    year += second.Years() + (month - monthrem) / 12;
    month = monthrem;

    if (DateTime::IsLeapYear(year))
    {
        if (day > (int) monthStartLeap[month + 1] - (int) monthStartLeap[month])
            day = (int) monthStartLeap[month + 1] - (int) monthStartLeap[month];
    }
    else
    {
        if (day > (int) monthStart[month + 1] - (int) monthStart[month])
            day = (int) monthStart[month + 1] - (int) monthStart[month];
    }

    return DateTime(year, month + 1, day, first.Hour(), first.Minute(), first.Second(), first.Timezone());
}
コード例 #2
0
DateTime operator- (const DateTime& first, const DayTimeDuration& second)
{
    return DateTime(first.Value() - second.Value(), first.Timezone());
}