]>
Commit | Line | Data |
---|---|---|
57a6839d A |
1 | /******************************************************************** |
2 | * COPYRIGHT: | |
3 | * Copyright (c) 2008-2014, International Business Machines Corporation and | |
4 | * others. All Rights Reserved. | |
5 | ********************************************************************/ | |
6 | //! [getBestPatternExample1] | |
7 | #include <iostream> | |
8 | #include "unicode/smpdtfmt.h" | |
9 | #include "unicode/dtptngen.h" | |
10 | #include "unicode/ustdio.h" | |
11 | //! [getBestPatternExample1] | |
12 | ||
13 | using namespace std; | |
14 | ||
15 | static void getBestPatternExample() { | |
16 | ||
17 | u_printf("========================================================================\n"); | |
18 | u_printf(" getBestPatternExample()\n"); | |
19 | u_printf("\n"); | |
20 | u_printf(" Use DateTimePatternGenerator to create customized date/time pattern:\n"); | |
21 | u_printf(" yQQQQ,yMMMM, MMMMd, hhmm, jjmm per locale\n"); | |
22 | u_printf("========================================================================\n"); | |
23 | //! [getBestPatternExample] | |
24 | UnicodeString skeletons [] = { | |
25 | UnicodeString("yQQQQ"), // year + full name of quarter, i.e., 4th quarter 1999 | |
26 | UnicodeString("yMMMM"), // year + full name of month, i.e., October 1999 | |
27 | UnicodeString("MMMMd"), // full name of month + day of the month, i.e., October 25 | |
28 | UnicodeString("hhmm"), // 12-hour-cycle format, i.e., 1:32 PM | |
29 | UnicodeString("jjmm"), // preferred hour format for the given locale, i.e., 24-hour-cycle format for fr_FR | |
30 | 0, | |
31 | }; | |
32 | ||
33 | Locale locales[] = { | |
34 | Locale ("en_US"), | |
35 | Locale ("fr_FR"), | |
36 | Locale ("zh_CN"), | |
37 | }; | |
38 | ||
39 | const char* filename = "sample.txt"; | |
40 | /* open a UTF-8 file for writing */ | |
41 | UFILE* f = u_fopen(filename, "w", NULL,"UTF-8"); | |
42 | UnicodeString dateReturned; | |
43 | UErrorCode status =U_ZERO_ERROR; | |
44 | Calendar *cal = Calendar::createInstance(status); | |
45 | cal->set (1999,9,13,23,58,59); | |
46 | UDate date = cal->getTime(status); | |
47 | u_fprintf(f, "%-20S%-20S%-20S%-20S\n", UnicodeString("Skeleton").getTerminatedBuffer(),UnicodeString("en_US").getTerminatedBuffer(),UnicodeString("fr_FR").getTerminatedBuffer(),UnicodeString("zh_CN").getTerminatedBuffer()); | |
48 | for (int i=0;skeletons[i]!=NULL;i++) { | |
49 | u_fprintf(f, "%-20S",skeletons[i].getTerminatedBuffer()); | |
50 | for (int j=0;j<sizeof(locales)/sizeof(locales[0]);j++) { | |
51 | // create a DateTimePatternGenerator instance for given locale | |
52 | DateTimePatternGenerator *dtfg= DateTimePatternGenerator::createInstance(locales[j],status); | |
53 | // use getBestPattern method to get the best pattern for the given skeleton | |
54 | UnicodeString pattern = dtfg->getBestPattern(skeletons[i],status); | |
55 | // Constructs a SimpleDateFormat with the best pattern generated above and the given locale | |
56 | SimpleDateFormat *sdf = new SimpleDateFormat(pattern,locales[j],status); | |
57 | dateReturned.remove(); | |
58 | // Get the format of the given date | |
59 | sdf->format(date,dateReturned,status); | |
60 | /* write Unicode string to file */ | |
61 | u_fprintf(f, "%-20S", dateReturned.getTerminatedBuffer()); | |
62 | delete dtfg; | |
63 | delete sdf; | |
64 | } | |
65 | u_fprintf(f,"\n"); | |
66 | } | |
67 | /* close the file resource */ | |
68 | u_fclose(f); | |
69 | delete cal; | |
70 | //! [getBestPatternExample] | |
71 | } | |
72 | ||
73 | static void addPatternExample() { | |
74 | ||
75 | u_printf("========================================================================\n"); | |
76 | u_printf(" addPatternExample()\n"); | |
77 | u_printf("\n"); | |
78 | u_printf(" Use addPattern API to add new '. von' to existing pattern\n"); | |
79 | u_printf("========================================================================\n"); | |
80 | //! [addPatternExample] | |
81 | UErrorCode status =U_ZERO_ERROR; | |
82 | UnicodeString conflictingPattern,dateReturned, pattern; | |
83 | Locale locale=Locale::getFrance(); | |
84 | Calendar *cal = Calendar::createInstance(status); | |
85 | cal->set (1999,9,13,23,58,59); | |
86 | UDate date = cal->getTime(status); | |
87 | // Create an DateTimePatternGenerator instance for the given locale | |
88 | DateTimePatternGenerator *dtfg= DateTimePatternGenerator::createInstance(locale,status); | |
89 | SimpleDateFormat *sdf = new SimpleDateFormat(dtfg->getBestPattern("MMMMddHmm",status),locale,status); | |
90 | // Add '. von' to the existing pattern | |
91 | dtfg->addPattern("dd'. von' MMMM", true, conflictingPattern,status); | |
92 | // Apply the new pattern | |
93 | sdf->applyPattern(dtfg->getBestPattern("MMMMddHmm",status)); | |
94 | dateReturned = sdf->format(date, dateReturned, status); | |
95 | pattern =sdf->toPattern(pattern); | |
96 | u_printf("%s\n", "New Pattern for FRENCH: "); | |
97 | u_printf("%S\n", pattern.getTerminatedBuffer()); | |
98 | u_printf("%s\n", "Date Time in new Pattern: "); | |
99 | u_printf("%S\n", dateReturned.getTerminatedBuffer()); | |
100 | delete dtfg; | |
101 | delete sdf; | |
102 | delete cal; | |
103 | ||
104 | //! [addPatternExample] | |
105 | /* output of the sample code: | |
106 | ************************************************************************************************ | |
107 | New Pattern for FRENCH: dd. 'von' MMMM HH:mm | |
108 | Date Time in new Pattern: 13. von octobre 23:58 | |
109 | ||
110 | *************************************************************************************************/ | |
111 | } | |
112 | ||
113 | static void replaceFieldTypesExample() { | |
114 | // Use repalceFieldTypes API to replace zone 'zzzz' with 'vvvv' | |
115 | u_printf("========================================================================\n"); | |
116 | u_printf(" replaceFieldTypeExample()\n"); | |
117 | u_printf("\n"); | |
118 | u_printf(" Use replaceFieldTypes API to replace zone 'zzzz' with 'vvvv'\n"); | |
119 | u_printf("========================================================================\n"); | |
120 | //! [replaceFieldTypesExample] | |
121 | UFILE *out = u_finit(stdout, NULL, "UTF-8"); | |
122 | UErrorCode status =U_ZERO_ERROR; | |
123 | UnicodeString pattern,dateReturned; | |
124 | Locale locale =Locale::getFrance(); | |
125 | Calendar *cal = Calendar::createInstance(status); | |
126 | cal->set (1999,9,13,23,58,59); | |
127 | UDate date = cal->getTime(status); | |
128 | TimeZone *zone = TimeZone::createTimeZone(UnicodeString("Europe/Paris")); | |
129 | DateTimePatternGenerator *dtfg = DateTimePatternGenerator::createInstance(locale,status); | |
130 | SimpleDateFormat *sdf = new SimpleDateFormat("EEEE d MMMM y HH:mm:ss zzzz",locale,status); | |
131 | sdf->setTimeZone(*zone); | |
132 | pattern = sdf->toPattern(pattern); | |
133 | u_fprintf(out, "%S\n", UnicodeString("Pattern before replacement:").getTerminatedBuffer()); | |
134 | u_fprintf(out, "%S\n", pattern.getTerminatedBuffer()); | |
135 | dateReturned.remove(); | |
136 | dateReturned = sdf->format(date, dateReturned, status); | |
137 | u_fprintf(out, "%S\n", UnicodeString("Date/Time format in fr_FR:").getTerminatedBuffer()); | |
138 | u_fprintf(out, "%S\n", dateReturned.getTerminatedBuffer()); | |
139 | // Replace zone "zzzz" in the pattern with "vvvv" | |
140 | UnicodeString newPattern = dtfg->replaceFieldTypes(pattern, "vvvv", status); | |
141 | // Apply the new pattern | |
142 | sdf->applyPattern(newPattern); | |
143 | dateReturned.remove(); | |
144 | dateReturned = sdf->format(date, dateReturned, status); | |
145 | u_fprintf(out, "%S\n", UnicodeString("Pattern after replacement:").getTerminatedBuffer()); | |
146 | u_fprintf(out, "%S\n", newPattern.getTerminatedBuffer()); | |
147 | u_fprintf(out, "%S\n", UnicodeString("Date/Time format in fr_FR:").getTerminatedBuffer()); | |
148 | u_fprintf(out, "%S\n", dateReturned.getTerminatedBuffer()); | |
149 | delete sdf; | |
150 | delete dtfg; | |
151 | delete zone; | |
152 | delete cal; | |
153 | u_fclose(out); | |
154 | //! [replaceFieldTypesExample] | |
155 | } | |
156 | ||
157 | int main (int argc, char* argv[]) | |
158 | { | |
159 | getBestPatternExample(); | |
160 | addPatternExample(); | |
161 | replaceFieldTypesExample(); | |
162 | return 0; | |
163 | } |