From 19fcec84d8d7d21e796c7624e521b60d28ee21ed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:45:59 +0200 Subject: Adding upstream version 16.2.11+ds. Signed-off-by: Daniel Baumann --- .../example/posix_time/local_utc_conversion.cpp | 90 ++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/boost/libs/date_time/example/posix_time/local_utc_conversion.cpp (limited to 'src/boost/libs/date_time/example/posix_time/local_utc_conversion.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 + +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 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 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 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) + */ + -- cgit v1.2.3