
On Tue, 11 Jan 2005 09:22:06 -0500, Caleb Epstein wrote
On Tue, 11 Jan 2005 07:26:20 -0600, Bill Lear
wrote: I'd like to determine the total number of seconds between a date and the epoch ('00:00:00 1970-01-01 UTC'), The date can be in a timezone that has daylight savings. The date should be converted to UTC, with appropriate daylight savings adjustments made, and then the epoch subtracted from it. This should mirror the unix GNU 'date' utility, which can be run as:
% TZ="America/New_York" date --date='2004-10-04 12:14:32' +%s 1096906472
I've looked at the doc, but it's not clear how to do this. Could someone give me a few pointers, please?
I would make use of the standard library facilities timelocal or timegm to convert a struct tm to time_t format. The former assumes the time is expressed in local time (as specified by the TZ environment variable or via tzset) and the latter assumes it is in GMT.
The support for timezone conversions in Boost.DateTime is rudimentary at best and does not currently make use of operating system facilities like the zoneinfo database.
From the timezone you can determine the utc offset and dst_offset as well as
This is true, but in 1.33 this will be vastly improved.
In fact, the experimental version of this is already in CVS. Have a look at
libs/date_time/test/local_time/testtz_database.cpp. There you will find
testcode for a timezone database feature that will allow you do convert
directly based on a regional timezone specification (there's also a posix
timezone specification class). Bascially you load in the timezone data from a
csv file -- one is provided in the libs/date_time/data/ directory that derives
from the timezone database project.
tz_database tz_db;
tz_db.load_from_file("../data/date_time_zonespec.csv");
boost::shared_ptr