
I just started with date_time library using boost-1.33.0-3 on FC4 and gcc 4.0.1 20050727. It is rpm version downloaded from http://download.fedora.redhat.com/pub/fedora/linux/core/development/i386/Fed.... I copied some lines of code from boost_date_time.pdf to get familiar with capabilities of this library and I encountered some problems. Here is a modified code taken from page 3 of the manual /* The following is a simple example that shows conversion of dates * to and from a std::string. ** Expected output: * 2001-Oct-09 * 2001-10-09 * Tuesday October 9, 2001 * An expected exception is next: * Exception: Month number is out of range 1..12 */ #include "boost/date_time/gregorian/gregorian.hpp" #include "boost/date_time/posix_time/posix_time.hpp" #include "boost/date_time/posix_time/posix_time_duration.hpp" #include "boost/date_time/local_time/local_time.hpp" #include <iostream> #include <string> #include <sstream> using namespace boost::gregorian; using namespace boost::local_time; using namespace boost::posix_time; using namespace std; int main() { try { //input streaming stringstream ss("2004-Jan-1"); date d; ss >> d; cout << " d " << d << endl; ptime t0; ss >> t0; cout << " t0 " << t0 << endl; date d1(1999, Jan, 1); ss >> d1; cout << " d1 " << d1 << endl; ptime t2(d1, minutes(0)); cout << " t2 " << t2 << endl; ss >> t2; cout << " t2 " << t2 << endl; date d3(2002,Feb,1); //an arbitrary date // the line below compiles with error: ‘nanosec’ was not declared in this scope // ptime t1(d3, hours(5)+nanosec(100)); //date + time of day offset ptime t1(d3, hours(5)); cout << " d3 " << d3 << endl; ptime t3 = t1 - minutes(4)+seconds(2); ptime now = second_clock::local_time(); //use the clock date today = now.date(); //Get the date part out of the time date tomorrow = today + date_duration(1); ptime tomorrow_start(tomorrow); //midnight // std::stringstream ss1("2004-Jan-1 05:21:33.20"); stringstream ss1("2004-Jan-1"); ss1 >> t2; cout << " t2 " << t2 << endl; //starting at current time iterator adds by one hour time_iterator titr(now,hours(1)); for (; titr < tomorrow_start; ++titr) { cout << (*titr) << std::endl; } } catch(std::exception& e) { std::cout << " Exception: " << e.what() << std::endl; } return 0; } And output from this program is d not-a-date-time t0 not-a-date-time d1 1999-Jan-01 t2 1999-Jan-01 00:00:00 t2 1999-Jan-01 00:00:00 d3 2002-Feb-01 t2 2004-Jan-01 00:00:00 2005-Sep-16 08:58:09 2005-Sep-16 09:58:09 2005-Sep-16 10:58:09 2005-Sep-16 11:58:09 2005-Sep-16 12:58:09 2005-Sep-16 13:58:09 2005-Sep-16 14:58:09 2005-Sep-16 15:58:09 2005-Sep-16 16:58:09 2005-Sep-16 17:58:09 2005-Sep-16 18:58:09 2005-Sep-16 19:58:09 2005-Sep-16 20:58:09 2005-Sep-16 21:58:09 2005-Sep-16 22:58:09 2005-Sep-16 23:58:09 My question is why d and t0 are not-a-date-time? Is this expected? Also the line ptime t1(d3, hours(5)+nanosec(100)); //date + time of day offset compiles with error: ‘nanosec’ was not declared in this scope Thanks, Michal