File: ex_local_utc_conversion.xml

package info (click to toggle)
boost1.35 1.35.0-5
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 203,856 kB
  • ctags: 337,867
  • sloc: cpp: 938,683; xml: 56,847; ansic: 41,589; python: 18,999; sh: 11,566; makefile: 664; perl: 494; yacc: 456; asm: 353; csh: 6
file content (103 lines) | stat: -rw-r--r-- 3,756 bytes parent folder | download | duplicates (18)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" 
"../../../tools/boostbook/dtd/boostbook.dtd">

<!-- Copyright (c) 2001-2004 CrystalClear Software, Inc.
     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)
-->

<section id="date_time.examples.local_utc_conversion">
  <title>Local to UTC Conversion</title>

  <para>
    Demonstrate utc to local and local to utc calculations including dst.
  </para>
  <programlisting>
    <![CDATA[

  /* 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;
  }

    ]]>
  </programlisting>
</section>