X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftime%2Fdatetime.cpp;h=415ce40abcdbd9dd7b4e2a61c2ebe995711413cb;hb=1cd1a0e185ba31cf89c72dcecbd15c7a5b3b7060;hp=23d0f2a5e7e223a3cdae6af23e6da121ab87d167;hpb=60a981f03d531f365c69f25877239ffe48bc14c3;p=libs%2Fcore.git diff --git a/source/time/datetime.cpp b/source/time/datetime.cpp index 23d0f2a..415ce40 100644 --- a/source/time/datetime.cpp +++ b/source/time/datetime.cpp @@ -6,9 +6,8 @@ Distributed under the LGPL */ #include -#include -#include #include +#include #include "datetime.h" #include "timestamp.h" #include "units.h" @@ -151,7 +150,7 @@ void DateTime::add_days(int days) new_year += cycles; - if((year-fudge)%4+cycles>=4) + if((year-fudge)%4+cycles>=4 && (new_year%100>=4 || new_year%400<4)) { // We passed a leap year - decrement days if(days==0) @@ -255,8 +254,7 @@ TimeStamp DateTime::get_timestamp() const string DateTime::format(const string &fmt) const { - ostringstream ss; - ss.fill('0'); + string result; for(string::const_iterator i=fmt.begin(); i!=fmt.end(); ++i) { if(*i=='%') @@ -265,31 +263,31 @@ string DateTime::format(const string &fmt) const if(i==fmt.end()) break; else if(*i=='d') - ss<=12) ? "PM" : "AM"); + result += ((hour>=12) ? "PM" : "AM"); else if(*i=='S') - ss<(offs/Time::min)); - ss<<(offs