diff --git a/src/ISO8601.cpp b/src/ISO8601.cpp index d6d16b203..71671072c 100644 --- a/src/ISO8601.cpp +++ b/src/ISO8601.cpp @@ -798,6 +798,14 @@ bool ISO8601p::parse (const std::string& input, std::string::size_type& start) return false; } +//////////////////////////////////////////////////////////////////////////////// +// Static +bool ISO8601d::leapYear (int year) +{ + return ((! (year % 4)) && (year % 100)) || + ! (year % 400); +} + //////////////////////////////////////////////////////////////////////////////// // Static int ISO8601d::dayOfWeek (const std::string& input) @@ -817,6 +825,7 @@ int ISO8601d::dayOfWeek (const std::string& input) } //////////////////////////////////////////////////////////////////////////////// +// Static int ISO8601d::length (const std::string& format) { int len = 0; diff --git a/src/ISO8601.h b/src/ISO8601.h index 0038b2552..2ee9b0432 100644 --- a/src/ISO8601.h +++ b/src/ISO8601.h @@ -44,6 +44,8 @@ public: operator time_t () const; bool parse (const std::string&, std::string::size_type&, const std::string& format = ""); + static bool leapYear (int); + static int dayOfWeek (const std::string&); static int length (const std::string&); diff --git a/test/iso8601d.t.cpp b/test/iso8601d.t.cpp index dbd1f2712..bdf3682f0 100644 --- a/test/iso8601d.t.cpp +++ b/test/iso8601d.t.cpp @@ -71,7 +71,7 @@ void testParse ( //////////////////////////////////////////////////////////////////////////////// int main (int argc, char** argv) { - UnitTest t (788); + UnitTest t (792); ISO8601d iso; std::string::size_type start = 0; @@ -218,6 +218,12 @@ int main (int argc, char** argv) try { + // Leap year. + t.ok (ISO8601d::leapYear (2008), "2008 is a leap year"); + t.notok (ISO8601d::leapYear (2007), "2007 is not a leap year"); + t.ok (ISO8601d::leapYear (2000), "2000 is a leap year"); + t.notok (ISO8601d::leapYear (1900), "1900 is not a leap year"); + t.is (ISO8601d::dayOfWeek ("SUNDAY"), 0, "SUNDAY == 0"); t.is (ISO8601d::dayOfWeek ("sunday"), 0, "sunday == 0"); t.is (ISO8601d::dayOfWeek ("Sunday"), 0, "Sunday == 0");