Boost logo

Boost :

Subject: [boost] local_time seems not monotonic
From: Gaetano Mendola (mendola_at_[hidden])
Date: 2014-07-30 18:35:02


The following snippet seems to generate non monotonic local_date.

I'm using boost 1.55 on linux.

#include <boost/date_time/local_time/local_time.hpp>
#include <boost/ptr_container/ptr_vector.hpp>

int main() {
  const boost::local_time::time_zone_ptr theTimeZone(
    new boost::local_time::posix_time_zone(
          "CET+01CEST+01,M3.5.0/02:00,M10.5.0/03:00")
  );

  boost::local_time::local_date_time myOldValue(
    boost::local_time::local_microsec_clock::local_time(theTimeZone));

  for (size_t i = 0; ; ++i) {
    const boost::local_time::local_date_time myLocalTime =
        boost::local_time::local_microsec_clock::local_time(theTimeZone);

    if (myLocalTime < myOldValue) {
      std::cout << myOldValue << std::endl;
      std::cout << myLocalTime << std::endl;
      std::cout << boost::local_time::local_microsec_clock::local_time(theTimeZone) << std::endl;
      std::cout << "====================" << std::endl;
    }

    myOldValue = myLocalTime;
  }
}

As you can see the program is not supposed to print nothing ever,
however this is what I'm getting:

2014-Jul-31 00:24:56.005625 CEST
2014-Jul-31 00:24:55.005631 CEST
2014-Jul-31 00:24:56.005946 CEST
====================
2014-Jul-31 00:24:58.005625 CEST
2014-Jul-31 00:24:57.005629 CEST
2014-Jul-31 00:24:58.005824 CEST
====================
2014-Jul-31 00:25:02.005624 CEST
2014-Jul-31 00:25:01.005628 CEST
2014-Jul-31 00:25:02.005838 CEST
====================
2014-Jul-31 00:25:04.005625 CEST
2014-Jul-31 00:25:03.005630 CEST
2014-Jul-31 00:25:04.005826 CEST
====================
2014-Jul-31 00:25:06.005624 CEST
2014-Jul-31 00:25:05.005633 CEST
2014-Jul-31 00:25:06.005853 CEST
====================
2014-Jul-31 00:25:07.005625 CEST
2014-Jul-31 00:25:06.005631 CEST
2014-Jul-31 00:25:07.005846 CEST
====================
2014-Jul-31 00:25:12.005625 CEST
2014-Jul-31 00:25:11.005631 CEST
2014-Jul-31 00:25:12.005822 CEST
====================

as you can see when the local_date is near 0.005631 second fraction it
goes back of one second and then forward again on the following call.

Am I missing something ?

Regards
Gaetano Mendola


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk