X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftime%2Fdatetime.cpp;h=c77796f7bc0bd8c8cd378d739fb5a458f006a491;hb=87edba02a23b1338934e36fac407966b25fcf811;hp=23d0f2a5e7e223a3cdae6af23e6da121ab87d167;hpb=60a981f03d531f365c69f25877239ffe48bc14c3;p=libs%2Fcore.git diff --git a/source/time/datetime.cpp b/source/time/datetime.cpp index 23d0f2a..c77796f 100644 --- a/source/time/datetime.cpp +++ b/source/time/datetime.cpp @@ -1,17 +1,8 @@ -/* $Id$ - -This file is part of libmspcore -Copyright © 2006 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #include -#include -#include #include +#include #include "datetime.h" #include "timestamp.h" -#include "units.h" using namespace std; @@ -129,7 +120,7 @@ void DateTime::add_days(int days) } // Fudge factor for leap day - int fudge = (month<=2)?1:0; + int fudge = (month<=2) ? 1 : 0; // (Almost) every 4 year cycle has 1 leap year and 3 normal years unsigned cycles = days/1461; @@ -151,12 +142,12 @@ 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) { - days = is_leap_year(new_year-fudge)?365:364; + days = is_leap_year(new_year-fudge) ? 365 : 364; --new_year; } else @@ -187,7 +178,7 @@ void DateTime::set_timezone(const TimeZone &tz) void DateTime::convert_timezone(const TimeZone &tz) { - add_raw((zone.get_offset()-tz.get_offset()).raw()); + add_raw((tz.get_offset()-zone.get_offset()).raw()); zone = tz; } @@ -255,8 +246,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 +255,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