- 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.
// Format may include: mMdDyYVaAbBhHNS
// Format may include: mMdDyYVaAbBhHNSjJ
//
// 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.
@ -666,6 +666,13 @@ int Date::dayOfWeek (const std::string& input)
return -1;
}
////////////////////////////////////////////////////////////////////////////////
int Date::dayOfYear () const
{
struct tm* t = localtime (&mT);
return t->tm_yday + 1;
}
////////////////////////////////////////////////////////////////////////////////
int Date::monthOfYear (const std::string& input)
{

View file

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

View file

@ -34,7 +34,7 @@ Context context;
////////////////////////////////////////////////////////////////////////////////
int main (int argc, char** argv)
{
UnitTest t (165);
UnitTest t (168);
try
{
@ -242,6 +242,11 @@ int main (int argc, char** argv)
t.is (fromString13.minute (), 34, "ctor (std::string) -> N");
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
Date e1 (Date::easter(1980));
t.is (e1.toString (), "4/6/1980", "Easter 4/6/1980");