Boost logo

Boost Users :

Subject: [Boost-users] [datetime] local_date_time and time zone issues
From: Boris (boriss_at_[hidden])
Date: 2009-01-07 07:44:41


I've been playing with local_date_time and time zones but don't understand
the return values of utc_time(), local_time() and local_time_in(). Here's
a small program:

----------
#include <boost/date_time/local_time/local_time.hpp>
#include <iostream>

int main()
{
   boost::local_time::time_zone_ptr tz1(new
boost::local_time::posix_time_zone("CET+1"));
   boost::posix_time::ptime pt1(boost::gregorian::date(2009, 1, 5),
boost::posix_time::time_duration(12, 0, 0));
   boost::local_time::local_date_time dt1(pt1, tz1);
   std::cout << dt1.utc_time() << std::endl;
   std::cout << dt1.local_time() << std::endl;
   boost::local_time::time_zone_ptr tz2(new
boost::local_time::posix_time_zone("CET+2"));
   std::cout << dt1.local_time_in(tz2) << std::endl;
}
----------

The output of this program is:
2009-Jan-05 12:00:00
2009-Jan-05 13:00:00
2009-Jan-05 14:00:00 CET

The program uses CET which is the abbreviation for Central European Time
which is UTC+1. If the UTC time is now 12:00:00 the local time in CET+1
must be 14:00:00 (and not 13:00:00). Accordingly the local time in CET+2
must be 15:00:00. Why Boost.DateTime appends "CET" to the local time in
CET+2 I don't understand either.

Is this a bug or do I misunderstand these functions?

Boris


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net