mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
Enhancement - Date::toISO
- Added ISO date format support (19980119T070000Z) to Date class, for use in export.ical. - Added unit test.
This commit is contained in:
parent
8cd8c4753b
commit
3ef6aa9f8e
3 changed files with 25 additions and 1 deletions
20
src/Date.cpp
20
src/Date.cpp
|
@ -25,6 +25,7 @@
|
||||||
//
|
//
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <iomanip>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
@ -375,6 +376,25 @@ std::string Date::toEpochString ()
|
||||||
return epoch.str ();
|
return epoch.str ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// 19980119T070000Z = YYYYMMDDThhmmssZ
|
||||||
|
std::string Date::toISO ()
|
||||||
|
{
|
||||||
|
struct tm* t = gmtime (&mT);
|
||||||
|
|
||||||
|
std::stringstream iso;
|
||||||
|
iso << std::setw (4) << std::setfill ('0') << t->tm_year + 1900
|
||||||
|
<< std::setw (2) << std::setfill ('0') << t->tm_mon + 1
|
||||||
|
<< std::setw (2) << std::setfill ('0') << t->tm_mday
|
||||||
|
<< "T"
|
||||||
|
<< std::setw (2) << std::setfill ('0') << t->tm_hour
|
||||||
|
<< std::setw (2) << std::setfill ('0') << t->tm_min
|
||||||
|
<< std::setw (2) << std::setfill ('0') << t->tm_sec
|
||||||
|
<< "Z";
|
||||||
|
|
||||||
|
return iso.str ();
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
void Date::toEpoch (time_t& epoch)
|
void Date::toEpoch (time_t& epoch)
|
||||||
{
|
{
|
||||||
|
|
|
@ -47,6 +47,7 @@ public:
|
||||||
void toEpoch (time_t&);
|
void toEpoch (time_t&);
|
||||||
time_t toEpoch ();
|
time_t toEpoch ();
|
||||||
std::string toEpochString ();
|
std::string toEpochString ();
|
||||||
|
std::string toISO ();
|
||||||
void toMDY (int&, int&, int&);
|
void toMDY (int&, int&, int&);
|
||||||
const std::string toString (const std::string& format = "m/d/Y") const;
|
const std::string toString (const std::string& format = "m/d/Y") const;
|
||||||
const std::string toStringWithTime (const std::string& format = "m/d/Y") const;
|
const std::string toStringWithTime (const std::string& format = "m/d/Y") const;
|
||||||
|
|
|
@ -34,7 +34,7 @@ Context context;
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
int main (int argc, char** argv)
|
int main (int argc, char** argv)
|
||||||
{
|
{
|
||||||
UnitTest t (143);
|
UnitTest t (144);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -150,6 +150,9 @@ int main (int argc, char** argv)
|
||||||
Date fromEpoch (epoch.toEpoch ());
|
Date fromEpoch (epoch.toEpoch ());
|
||||||
t.is (fromEpoch.toString (), epoch.toString (), "ctor (time_t)");
|
t.is (fromEpoch.toString (), epoch.toString (), "ctor (time_t)");
|
||||||
|
|
||||||
|
Date iso (1000000000);
|
||||||
|
t.is (iso.toISO (), "20010909T014640Z", "1,000,000,000 -> 20010909T014640Z");
|
||||||
|
|
||||||
// Date parsing.
|
// Date parsing.
|
||||||
Date fromString1 ("1/1/2008");
|
Date fromString1 ("1/1/2008");
|
||||||
t.is (fromString1.month (), 1, "ctor (std::string) -> m");
|
t.is (fromString1.month (), 1, "ctor (std::string) -> m");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue