Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_33_1/libs/date_time/xmldoc/ex_localization.xml @ 12

Last change on this file since 12 was 12, checked in by landauf, 17 years ago

added boost

File size: 4.1 KB
Line 
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-2005 CrystalClear Software, Inc.
6     Subject to the Boost Software License, Version 1.0.
7     (See accompanying file LICENSE-1.0 or  http://www.boost.org/LICENSE-1.0)
8-->
9
10<section id="date_time.examples.localization">
11  <title>Localization Demonstration</title>
12
13  <para>
14    The boost::date_time library provides the ability to create customized locale facets. Date ordering, language, seperators, and abbreviations can be customized.
15  </para>
16  <!-- <para>
17    This example uses the new (as of 1.33) date_time IO code. An example using the old code is also provided to demonstrate how much easier customized output is (see <link linkend="date_time.examples.legacy_localization">legacy_localization example</link>).
18  </para> -->
19  <programlisting>
20    <![CDATA[
21  /* The following shows the creation of a facet for the output of
22   * dates in German (please forgive me for any errors in my German --
23   * I'm not a native speaker).
24   */
25
26  #include "boost/date_time/gregorian/gregorian.hpp"
27  #include <iostream>
28  #include <algorithm>
29
30  /* Define a series of char arrays for short and long name strings
31   * to be associated with German date output (US names will be
32   * retrieved from the locale). */
33  const char* const de_short_month_names[] =
34  {
35    "Jan", "Feb", "Mar", "Apr", "Mai", "Jun",
36    "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "NAM"
37  };
38  const char* const de_long_month_names[] =
39  {
40    "Januar", "Februar", "Marz", "April", "Mai",
41    "Juni", "Juli", "August", "September", "Oktober",
42    "November", "Dezember", "NichtDerMonat"
43  };
44  const char* const de_long_weekday_names[] =
45  {
46    "Sonntag", "Montag", "Dienstag", "Mittwoch",
47    "Donnerstag", "Freitag", "Samstag"
48  };
49  const char* const de_short_weekday_names[] =
50  {
51    "Son", "Mon", "Die","Mit", "Don", "Fre", "Sam"
52  };
53
54
55  int main()
56  {
57    using namespace boost::gregorian;
58   
59    // create some gregorian objects to output
60    date d1(2002, Oct, 1);
61    greg_month m = d1.month();
62    greg_weekday wd = d1.day_of_week();
63   
64    // create a facet and a locale for German dates
65    date_facet* german_facet = new date_facet();
66    std::cout.imbue(std::locale(std::locale::classic(), german_facet));
67
68    // create the German name collections
69    date_facet::input_collection_type short_months, long_months,
70                                      short_weekdays, long_weekdays;
71    std::copy(&de_short_month_names[0], &de_short_month_names[11],
72              std::back_inserter(short_months));
73    std::copy(&de_long_month_names[0], &de_long_month_names[11],
74              std::back_inserter(long_months));
75    std::copy(&de_short_weekday_names[0], &de_short_weekday_names[6],
76              std::back_inserter(short_weekdays));
77    std::copy(&de_long_weekday_names[0], &de_long_weekday_names[6],
78              std::back_inserter(long_weekdays));
79
80    // replace the default names with ours
81    // NOTE: date_generators and special_values were not replaced as
82    // they are not used in this example
83    german_facet->short_month_names(short_months);
84    german_facet->long_month_names(long_months);
85    german_facet->short_weekday_names(short_weekdays);
86    german_facet->long_weekday_names(long_weekdays);
87   
88    // output the date in German using short month names
89    german_facet->format("%d.%m.%Y");
90    std::cout << d1 << std::endl; //01.10.2002
91   
92    german_facet->month_format("%B");
93    std::cout << m << std::endl; //Oktober
94   
95    german_facet->weekday_format("%A");
96    std::cout << wd << std::endl; //Dienstag
97
98
99    // Output the same gregorian objects using US names
100    date_facet* us_facet = new date_facet();
101    std::cout.imbue(std::locale(std::locale::classic(), us_facet));
102
103    us_facet->format("%m/%d/%Y");
104    std::cout << d1 << std::endl; //  10/01/2002
105   
106    // English names, iso order (year-month-day), '-' separator
107    us_facet->format("%Y-%b-%d");
108    std::cout << d1 << std::endl; //  2002-Oct-01
109   
110    return 0;
111
112  }
113    ]]>
114  </programlisting>
115</section>
Note: See TracBrowser for help on using the repository browser.