From: Arjen Baart Date: Sat, 16 Nov 2019 17:22:38 +0000 (+0100) Subject: date::YearDay() X-Git-Tag: V0.3~5 X-Git-Url: http://www.andromeda.nl/gitweb/?a=commitdiff_plain;h=472b469505e73ee9eb2b5a7c2be7c5426fd80bc1;p=libacl.git date::YearDay() --- diff --git a/src/date.cpp b/src/date.cpp index c9c59b6..f9dd5ac 100644 --- a/src/date.cpp +++ b/src/date.cpp @@ -119,6 +119,34 @@ unsigned date::DaysInMonth(void) return days; } +String date::MonthName(void) +{ + if (month <= 12) + { + return String(abr_month_name[month]); + } + else + { + return String("xxx"); + } +} + +unsigned date::YearDay(void) +{ + unsigned days = 0; + + if (proper()) + { + for (unsigned m = 1; m < month; m++) + { + days += date(1, m, year).DaysInMonth(); + } + days += day; + } + + return days; +} + date date::add(date D) { year += D.year; @@ -329,18 +357,6 @@ std::istream &operator>>(std::istream &s, date &d) return s; } -String date::MonthName(void) -{ - if (month <= 12) - { - return String(abr_month_name[month]); - } - else - { - return String("xxx"); - } -} - String date::format(const char *fmt) { String s; diff --git a/src/date.h b/src/date.h index 1927b5e..2a7f3e1 100644 --- a/src/date.h +++ b/src/date.h @@ -215,6 +215,8 @@ public: int Leap(void); unsigned DaysInMonth(); + unsigned YearDay(); + // TODO:YearDay WeekDay WeekNumber DayName // date operator*(double) // date& operator*=(double) diff --git a/test/date_attributes.cpp b/test/date_attributes.cpp index 44204d4..653eb42 100644 --- a/test/date_attributes.cpp +++ b/test/date_attributes.cpp @@ -28,10 +28,18 @@ int main() std::cout << d0 << " Leap = " << d0.Leap() << "\n"; assert(d0.Leap() == 0); + std::cout << d0 << " YearDay = " << d0.YearDay() << "\n"; + std::cout.flush(); + assert(d0.YearDay() == 160); + date d1(9, 6, 2020); std::cout << d1 << " Leap = " << d1.Leap() << "\n"; assert(d1.Leap() == 1); + std::cout << d1 << " YearDay = " << d1.YearDay() << "\n"; + std::cout.flush(); + assert(d1.YearDay() == 161); + date d2(9, 6, 2000); std::cout << d2 << " Leap = " << d2.Leap() << "\n"; assert(d2.Leap() == 1); @@ -44,6 +52,10 @@ int main() std::cout << d4.MonthName() << " " << d4.Year() << " has " << d4.DaysInMonth() << " days.\n"; assert(d4.DaysInMonth() == 31); + std::cout << d4 << " YearDay = " << d4.YearDay() << "\n"; + std::cout.flush(); + assert(d4.YearDay() == 1); + date d5(1, 2, 2019); std::cout << d5.MonthName() << " " << d5.Year() << " has " << d5.DaysInMonth() << " days.\n"; assert(d5.DaysInMonth() == 28); @@ -52,6 +64,10 @@ int main() std::cout << d6.MonthName() << " " << d6.Year() << " has " << d6.DaysInMonth() << " days.\n"; assert(d6.DaysInMonth() == 29); + std::cout << d6 << " YearDay = " << d6.YearDay() << "\n"; + std::cout.flush(); + assert(d6.YearDay() == 32); + return 0; } diff --git a/test/date_attributes.exp b/test/date_attributes.exp index 6a95164..686bc4f 100644 --- a/test/date_attributes.exp +++ b/test/date_attributes.exp @@ -3,10 +3,14 @@ 09-06-2019 Monthname = Jun 09-06-2019 Year = 2019 09-06-2019 Leap = 0 +09-06-2019 YearDay = 160 09-06-2020 Leap = 1 +09-06-2020 YearDay = 161 09-06-2000 Leap = 1 09-06-2100 Leap = 0 Jan 2019 has 31 days. +01-01-2019 YearDay = 1 Feb 2019 has 28 days. Feb 2020 has 29 days. +01-02-2020 YearDay = 32 PASS date_attributes (exit status: 0)