diff options
Diffstat (limited to '')
5 files changed, 250 insertions, 0 deletions
diff --git a/src/boost/libs/date_time/example/posix_time/Jamfile.v2 b/src/boost/libs/date_time/example/posix_time/Jamfile.v2 new file mode 100644 index 000000000..b7bf07e6c --- /dev/null +++ b/src/boost/libs/date_time/example/posix_time/Jamfile.v2 @@ -0,0 +1,13 @@ +# Copyright (c) 2002-2005 CrystalClear Software, Inc. +# Use, modification and distribution is subject to the +# Boost Software License, Version 1.0. (See accompanying +# file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) + +project + : requirements <library>../../build/boost_date_time + ; + +exe time_math : time_math.cpp ; +exe local_utc_conversion : local_utc_conversion.cpp ; +exe print_hours : print_hours.cpp ; +exe time_periods : time_periods.cpp ; diff --git a/src/boost/libs/date_time/example/posix_time/local_utc_conversion.cpp b/src/boost/libs/date_time/example/posix_time/local_utc_conversion.cpp new file mode 100644 index 000000000..5e712e88e --- /dev/null +++ b/src/boost/libs/date_time/example/posix_time/local_utc_conversion.cpp @@ -0,0 +1,90 @@ +/* Demonstrate conversions between a local time and utc + * Output: + * + * UTC <--> New York while DST is NOT active (5 hours) + * 2001-Dec-31 19:00:00 in New York is 2002-Jan-01 00:00:00 UTC time + * 2002-Jan-01 00:00:00 UTC is 2001-Dec-31 19:00:00 New York time + * + * UTC <--> New York while DST is active (4 hours) + * 2002-May-31 20:00:00 in New York is 2002-Jun-01 00:00:00 UTC time + * 2002-Jun-01 00:00:00 UTC is 2002-May-31 20:00:00 New York time + * + * UTC <--> Arizona (7 hours) + * 2002-May-31 17:00:00 in Arizona is 2002-Jun-01 00:00:00 UTC time + */ + +#include "boost/date_time/posix_time/posix_time.hpp" +#include "boost/date_time/local_time_adjustor.hpp" +#include "boost/date_time/c_local_time_adjustor.hpp" +#include <iostream> + +int +main() +{ + using namespace boost::posix_time; + using namespace boost::gregorian; + + //This local adjustor depends on the machine TZ settings-- highly dangerous! + typedef boost::date_time::c_local_adjustor<ptime> local_adj; + ptime t10(date(2002,Jan,1), hours(7)); + ptime t11 = local_adj::utc_to_local(t10); + std::cout << "UTC <--> Zone base on TZ setting" << std::endl; + std::cout << to_simple_string(t11) << " in your TZ is " + << to_simple_string(t10) << " UTC time " + << std::endl; + time_duration td = t11 - t10; + std::cout << "A difference of: " + << to_simple_string(td) << std::endl; + + + //eastern timezone is utc-5 + typedef boost::date_time::local_adjustor<ptime, -5, us_dst> us_eastern; + + ptime t1(date(2001,Dec,31), hours(19)); //5 hours b/f midnight NY time + + std::cout << "\nUTC <--> New York while DST is NOT active (5 hours)" + << std::endl; + ptime t2 = us_eastern::local_to_utc(t1); + std::cout << to_simple_string(t1) << " in New York is " + << to_simple_string(t2) << " UTC time " + << std::endl; + + ptime t3 = us_eastern::utc_to_local(t2);//back should be the same + std::cout << to_simple_string(t2) << " UTC is " + << to_simple_string(t3) << " New York time " + << "\n\n"; + + ptime t4(date(2002,May,31), hours(20)); //4 hours b/f midnight NY time + std::cout << "UTC <--> New York while DST is active (4 hours)" << std::endl; + ptime t5 = us_eastern::local_to_utc(t4); + std::cout << to_simple_string(t4) << " in New York is " + << to_simple_string(t5) << " UTC time " + << std::endl; + + ptime t6 = us_eastern::utc_to_local(t5);//back should be the same + std::cout << to_simple_string(t5) << " UTC is " + << to_simple_string(t6) << " New York time " + << "\n" << std::endl; + + + //Arizona timezone is utc-7 with no dst + typedef boost::date_time::local_adjustor<ptime, -7, no_dst> us_arizona; + + ptime t7(date(2002,May,31), hours(17)); + std::cout << "UTC <--> Arizona (7 hours)" << std::endl; + ptime t8 = us_arizona::local_to_utc(t7); + std::cout << to_simple_string(t7) << " in Arizona is " + << to_simple_string(t8) << " UTC time " + << std::endl; + + return 0; +} + + +/* Copyright 2001-2004: CrystalClear Software, Inc + * http://www.crystalclearsoftware.com + * + * Subject to the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) + */ + diff --git a/src/boost/libs/date_time/example/posix_time/print_hours.cpp b/src/boost/libs/date_time/example/posix_time/print_hours.cpp new file mode 100644 index 000000000..3877a3c73 --- /dev/null +++ b/src/boost/libs/date_time/example/posix_time/print_hours.cpp @@ -0,0 +1,53 @@ +/* Print the remaining hours of the day + * Uses the clock to get the local time + * Use an iterator to iterate over the remaining hours + * Retrieve the date part from a time + * + * Expected Output something like: + * + * 2002-Mar-08 16:30:59 + * 2002-Mar-08 17:30:59 + * 2002-Mar-08 18:30:59 + * 2002-Mar-08 19:30:59 + * 2002-Mar-08 20:30:59 + * 2002-Mar-08 21:30:59 + * 2002-Mar-08 22:30:59 + * 2002-Mar-08 23:30:59 + * Time left till midnight: 07:29:01 + */ + +#include "boost/date_time/posix_time/posix_time.hpp" +#include <iostream> + +int +main() +{ + using namespace boost::posix_time; + using namespace boost::gregorian; + + //get the current time from the clock -- one second resolution + ptime now = second_clock::local_time(); + //Get the date part out of the time + date today = now.date(); + date tomorrow = today + days(1); + ptime tomorrow_start(tomorrow); //midnight + + //iterator adds by one hour + time_iterator titr(now,hours(1)); + for (; titr < tomorrow_start; ++titr) { + std::cout << to_simple_string(*titr) << std::endl; + } + + time_duration remaining = tomorrow_start - now; + std::cout << "Time left till midnight: " + << to_simple_string(remaining) << std::endl; + return 0; +} + +/* Copyright 2001-2004: CrystalClear Software, Inc + * http://www.crystalclearsoftware.com + * + * Subject to the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) + */ + diff --git a/src/boost/libs/date_time/example/posix_time/time_math.cpp b/src/boost/libs/date_time/example/posix_time/time_math.cpp new file mode 100644 index 000000000..99793ebc7 --- /dev/null +++ b/src/boost/libs/date_time/example/posix_time/time_math.cpp @@ -0,0 +1,36 @@ +/* Some simple examples of constructing and calculating with times + * Output: + * 2002-Feb-01 00:00:00 - 2002-Feb-01 05:04:02.001000000 = -5:04:02.001000000 + */ + +#include "boost/date_time/posix_time/posix_time.hpp" +#include <iostream> + +int +main() +{ + using namespace boost::posix_time; + using namespace boost::gregorian; + + date d(2002,Feb,1); //an arbitrary date + //construct a time by adding up some durations + ptime t1(d, hours(5)+minutes(4)+seconds(2)+milliseconds(1)); + //construct a new time by subtracting some times + ptime t2 = t1 - hours(5)- minutes(4)- seconds(2)- milliseconds(1); + //construct a duration by taking the difference between times + time_duration td = t2 - t1; + + std::cout << to_simple_string(t2) << " - " + << to_simple_string(t1) << " = " + << to_simple_string(td) << std::endl; + + return 0; +} + +/* Copyright 2001-2004: CrystalClear Software, Inc + * http://www.crystalclearsoftware.com + * + * Subject to the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) + */ + diff --git a/src/boost/libs/date_time/example/posix_time/time_periods.cpp b/src/boost/libs/date_time/example/posix_time/time_periods.cpp new file mode 100644 index 000000000..28e38708b --- /dev/null +++ b/src/boost/libs/date_time/example/posix_time/time_periods.cpp @@ -0,0 +1,58 @@ +/* Some simple examples of constructing and calculating with times + * Returns: + * [2002-Feb-01 00:00:00/2002-Feb-01 23:59:59.999999999] contains 2002-Feb-01 03:00:05 + * [2002-Feb-01 00:00:00/2002-Feb-01 23:59:59.999999999] intersected with + * [2002-Feb-01 00:00:00/2002-Feb-01 03:00:04.999999999] is + * [2002-Feb-01 00:00:00/2002-Feb-01 03:00:04.999999999] + */ + +#include "boost/date_time/posix_time/posix_time.hpp" +#include <iostream> + +using namespace boost::posix_time; +using namespace boost::gregorian; + +//Create a simple period class to contain all the times in a day +class day_period : public time_period +{ +public: + day_period(date d) : time_period(ptime(d),//midnight + ptime(d,hours(24))) + {} + +}; + +int +main() +{ + + date d(2002,Feb,1); //an arbitrary date + //a period that represents a day + day_period dp(d); + ptime t(d, hours(3)+seconds(5)); //an arbitray time on that day + if (dp.contains(t)) { + std::cout << to_simple_string(dp) << " contains " + << to_simple_string(t) << std::endl; + } + //a period that represents part of the day + time_period part_of_day(ptime(d, hours(0)), t); + //intersect the 2 periods and print the results + if (part_of_day.intersects(dp)) { + time_period result = part_of_day.intersection(dp); + std::cout << to_simple_string(dp) << " intersected with\n" + << to_simple_string(part_of_day) << " is \n" + << to_simple_string(result) << std::endl; + } + + + return 0; +} + + +/* Copyright 2001-2004: CrystalClear Software, Inc + * http://www.crystalclearsoftware.com + * + * Subject to the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) + */ + |