- Implemented Date::dayOfYear which yields a number, 1 to 366.
This commit is contained in:
Paul Beckingham 2011-05-02 22:13:15 -04:00
parent b4be5991b8
commit 27752bd510
3 changed files with 15 additions and 2 deletions

View file

@ -100,7 +100,7 @@ Date::Date (const std::string& input, const std::string& format /* = "m/d/Y" */)
unsigned int i = 0; // Index into input. unsigned int i = 0; // Index into input.
// Format may include: mMdDyYVaAbBhHNS // Format may include: mMdDyYVaAbBhHNSjJ
// //
// Note that the format should never include T or Z, as that interferes with // Note that the format should never include T or Z, as that interferes with
// the potential parsing for ISO dates constructed from the above format. // the potential parsing for ISO dates constructed from the above format.
@ -666,6 +666,13 @@ int Date::dayOfWeek (const std::string& input)
return -1; return -1;
} }
////////////////////////////////////////////////////////////////////////////////
int Date::dayOfYear () const
{
struct tm* t = localtime (&mT);
return t->tm_yday + 1;
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
int Date::monthOfYear (const std::string& input) int Date::monthOfYear (const std::string& input)
{ {

View file

@ -75,6 +75,7 @@ public:
int year () const; int year () const;
int weekOfYear (int) const; int weekOfYear (int) const;
int dayOfWeek () const; int dayOfWeek () const;
int dayOfYear () const;
int hour () const; int hour () const;
int minute () const; int minute () const;
int second () const; int second () const;

View file

@ -34,7 +34,7 @@ Context context;
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
int main (int argc, char** argv) int main (int argc, char** argv)
{ {
UnitTest t (165); UnitTest t (168);
try try
{ {
@ -242,6 +242,11 @@ int main (int argc, char** argv)
t.is (fromString13.minute (), 34, "ctor (std::string) -> N"); t.is (fromString13.minute (), 34, "ctor (std::string) -> N");
t.is (fromString13.second (), 56, "ctor (std::string) -> S"); t.is (fromString13.second (), 56, "ctor (std::string) -> S");
// Day of year
t.is (Date ("1/1/2011", "m/d/Y").dayOfYear (), 1, "dayOfYear (1/1/2011) -> 1");
t.is (Date ("5/1/2011", "m/d/Y").dayOfYear (), 121, "dayOfYear (5/1/2011) -> 121");
t.is (Date ("12/31/2011", "m/d/Y").dayOfYear (), 365, "dayOfYear (12/31/2011) -> 365");
// Easter // Easter
Date e1 (Date::easter(1980)); Date e1 (Date::easter(1980));
t.is (e1.toString (), "4/6/1980", "Easter 4/6/1980"); t.is (e1.toString (), "4/6/1980", "Easter 4/6/1980");