]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/date_time/xmldoc/ex_local_utc_conversion.xml
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / date_time / xmldoc / ex_local_utc_conversion.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
3 "../../../tools/boostbook/dtd/boostbook.dtd">
4
5 <!-- Copyright (c) 2001-2004 CrystalClear Software, Inc.
6 Subject to the Boost Software License, Version 1.0.
7 (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
8 -->
9
10 <section id="date_time.examples.local_utc_conversion">
11 <title>Local to UTC Conversion</title>
12
13 <para>
14 Demonstrate utc to local and local to utc calculations including dst.
15 </para>
16 <programlisting>
17 <![CDATA[
18
19 /* Demonstrate conversions between a local time and utc
20 * Output:
21 *
22 * UTC <--> New York while DST is NOT active (5 hours)
23 * 2001-Dec-31 19:00:00 in New York is 2002-Jan-01 00:00:00 UTC time
24 * 2002-Jan-01 00:00:00 UTC is 2001-Dec-31 19:00:00 New York time
25 *
26 * UTC <--> New York while DST is active (4 hours)
27 * 2002-May-31 20:00:00 in New York is 2002-Jun-01 00:00:00 UTC time
28 * 2002-Jun-01 00:00:00 UTC is 2002-May-31 20:00:00 New York time
29 *
30 * UTC <--> Arizona (7 hours)
31 * 2002-May-31 17:00:00 in Arizona is 2002-Jun-01 00:00:00 UTC time
32 */
33
34 #include "boost/date_time/posix_time/posix_time.hpp"
35 #include "boost/date_time/local_time_adjustor.hpp"
36 #include "boost/date_time/c_local_time_adjustor.hpp"
37 #include <iostream>
38
39 int
40 main()
41 {
42 using namespace boost::posix_time;
43 using namespace boost::gregorian;
44
45 //This local adjustor depends on the machine TZ settings-- highly dangerous!
46 typedef boost::date_time::c_local_adjustor<ptime> local_adj;
47 ptime t10(date(2002,Jan,1), hours(7));
48 ptime t11 = local_adj::utc_to_local(t10);
49 std::cout << "UTC <--> Zone base on TZ setting" << std::endl;
50 std::cout << to_simple_string(t11) << " in your TZ is "
51 << to_simple_string(t10) << " UTC time "
52 << std::endl;
53 time_duration td = t11 - t10;
54 std::cout << "A difference of: "
55 << to_simple_string(td) << std::endl;
56
57
58 //eastern timezone is utc-5
59 typedef boost::date_time::local_adjustor<ptime, -5, us_dst> us_eastern;
60
61 ptime t1(date(2001,Dec,31), hours(19)); //5 hours b/f midnight NY time
62
63 std::cout << "\nUTC <--> New York while DST is NOT active (5 hours)"
64 << std::endl;
65 ptime t2 = us_eastern::local_to_utc(t1);
66 std::cout << to_simple_string(t1) << " in New York is "
67 << to_simple_string(t2) << " UTC time "
68 << std::endl;
69
70 ptime t3 = us_eastern::utc_to_local(t2);//back should be the same
71 std::cout << to_simple_string(t2) << " UTC is "
72 << to_simple_string(t3) << " New York time "
73 << "\n\n";
74
75 ptime t4(date(2002,May,31), hours(20)); //4 hours b/f midnight NY time
76 std::cout << "UTC <--> New York while DST is active (4 hours)" << std::endl;
77 ptime t5 = us_eastern::local_to_utc(t4);
78 std::cout << to_simple_string(t4) << " in New York is "
79 << to_simple_string(t5) << " UTC time "
80 << std::endl;
81
82 ptime t6 = us_eastern::utc_to_local(t5);//back should be the same
83 std::cout << to_simple_string(t5) << " UTC is "
84 << to_simple_string(t6) << " New York time "
85 << "\n" << std::endl;
86
87
88 //Arizona timezone is utc-7 with no dst
89 typedef boost::date_time::local_adjustor<ptime, -7, no_dst> us_arizona;
90
91 ptime t7(date(2002,May,31), hours(17));
92 std::cout << "UTC <--> Arizona (7 hours)" << std::endl;
93 ptime t8 = us_arizona::local_to_utc(t7);
94 std::cout << to_simple_string(t7) << " in Arizona is "
95 << to_simple_string(t8) << " UTC time "
96 << std::endl;
97
98 return 0;
99 }
100
101 ]]>
102 </programlisting>
103 </section>