X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftime%2Fdatetime.cpp;h=7fa8ceefbac56c0ac5b7507906ff15b0df1f8d31;hb=90d55c510f5dbd334be3a16017d1cf6ece61cf85;hp=d609b2907cc6f1a10f81db862e7154c9d52332bd;hpb=c0319d7fb558683afdcf523660a40355b6bf0955;p=libs%2Fcore.git diff --git a/source/time/datetime.cpp b/source/time/datetime.cpp index d609b29..7fa8cee 100644 --- a/source/time/datetime.cpp +++ b/source/time/datetime.cpp @@ -150,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) @@ -186,7 +186,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; } @@ -296,7 +296,7 @@ string DateTime::format_rfc3339() const if(const TimeDelta &offs = zone.get_offset()) { int m = abs(static_cast(offs/Time::min)); - result += Msp::format("%c%02d:%02d", (offs