The constructor of local_date_time also behaves strangely, too: according to the documentation the constructor that takes a posix_time::ptime
The given time is expected to be UTC. Therefore, the given time will be adjusted according to the offset described in the time zone.
As you can see in the attached test the constructed local_date_time formats
correctly when printed but provides a wrong local time when the fields are
accessed.
$ /opt2/linux/ix86/bin/g++-4.3.1 -I/opt2/linux/x86_64/include/boost-1_36 -o
boost1 boost1.cpp && (./boost1; ./boost1 1; ./boost1 1 2; ./boost1 1 2 3)
testing testConstructor ...
expected=19
actual =18
boost1: boost1.cpp:110: void testConstructor(): Assertion
`(static_cast