]>
Commit | Line | Data |
---|---|---|
73c04bcf | 1 | Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved. |
b75a7d8f A |
2 | This is an exercise for the ICU Workshop (September 2000). |
3 | ** Workshop homepage is: | |
73c04bcf | 4 | http://icu.sourceforge.net/docs/workshop_2000/agenda.html |
b75a7d8f A |
5 | |
6 | Day 2: September 12th 2000 | |
7 | Pre-requsit: | |
8 | 1. All the hardware and software requirements from Day 1. | |
9 | 2. Attended or fully understand Day 1 material. | |
10 | 3. Read through the ICU user's guide at | |
73c04bcf | 11 | http://icu.sourceforge.net/userguide/. |
b75a7d8f A |
12 | |
13 | #Date/Time/Number Formatting Support | |
14 | 9:30am - 10:30am | |
15 | Alan Liu | |
16 | ||
17 | Topics: | |
18 | 1. What is the date/time support in ICU? | |
19 | 2. What is the timezone support in ICU? | |
20 | 3. What kind of formatting and parsing support is available in ICU, i.e. | |
21 | NumberFormat, DateFormat, MessageFormat? | |
22 | ||
23 | ||
24 | INSTRUCTIONS | |
25 | ------------ | |
26 | ||
27 | This exercise was first developed and tested on ICU release 1.6.0, Win32, | |
28 | Microsoft Visual C++ 6.0. It should work on other ICU releases and | |
29 | other platforms as well. | |
30 | ||
31 | MSVC: | |
73c04bcf | 32 | Open the file "datefmt.sln" in Microsoft Visual C++. |
b75a7d8f A |
33 | |
34 | Unix: | |
35 | - Build and install ICU with a prefix, for example '--prefix=/home/srl/ICU' | |
36 | - Set the variable ICU_PREFIX=/home/srl/ICU and use GNU make in | |
37 | this directory. | |
38 | - You may use 'make check' to invoke this sample. | |
39 | ||
40 | PROBLEMS | |
41 | -------- | |
42 | ||
43 | Problem 0: | |
44 | ||
45 | Set up the program, build it, and run it. To start with, the | |
46 | program prints out a list of languages. | |
47 | ||
48 | Problem 1: Basic Date Formatting (Easy) | |
49 | ||
50 | Create a calendar, and use it to get the UDate for June 4, 1999, | |
51 | 0:00 GMT (or any date of your choosing). You will have to create a | |
52 | TimeZone (use the createZone() function already defined in main.cpp) | |
53 | and a Calendar object, and make the calendar use the time zone. | |
54 | ||
55 | Once you have the UDate, create a DateFormat object in each of the | |
56 | languages in the LANGUAGE array, and display the date in that | |
57 | language. Use the DateFormat::createDateInstance() method to create | |
58 | the date formatter. | |
59 | ||
60 | Problem 2: Date Formatting, Specific Time Zone (Medium) | |
61 | ||
62 | To really localize a time display, one can also specify the time | |
63 | zone in which the time should be displayed. For each language, | |
64 | also create different time zones from the TIMEZONE list. | |
65 | ||
66 | To format a date with a specific calendar and zone, you must deal with | |
67 | three objects: a DateFormat, a Calendar, and a TimeZone. Each object | |
68 | must be linked to another in correct sequence: The Calendar must use | |
69 | the TimeZone, and the DateFormat must use the Calendar. | |
70 | ||
71 | DateFormat =uses=> Calendar =uses=> TimeZone | |
72 | ||
73 | Use either setFoo() or adoptFoo() methods, depending on where you | |
74 | want to have ownership. | |
75 | ||
76 | NOTE: It's not always desirable to change the time to a local time | |
77 | zone before display. For instance, if some even occurs at 0:00 GMT | |
78 | on the first of the month, it's probably clearer to just state that. | |
79 | Stating that it occurs at 5:00 PM PDT on the day before in the | |
80 | summer, and 4:00 PM PST on the day before in the winter will just | |
81 | confuse the issue. | |
82 | ||
83 | ||
84 | NOTES | |
85 | ----- | |
86 | ||
87 | To see a list of system TimeZone IDs, use the TimeZone::create- | |
88 | AvailableIDs() methods. Alternatively, look at the file | |
89 | icu/docs/tz.htm. This has a hyperlinked list of current system zones. | |
90 | ||
91 | ||
92 | ANSWERS | |
93 | ------- | |
94 | ||
95 | The exercise includes answers. These are in the "answers" directory, | |
96 | and are numbered 1, 2, etc. | |
97 | ||
98 | If you get stuck and you want to move to the next step, copy the | |
99 | answers file into the main directory in order to proceed. E.g., | |
100 | "main_1.cpp" contains the original "main.cpp" file. "main_2.cpp" | |
101 | contains the "main.cpp" file after problem 1. Etc. | |
102 | ||
103 | ||
104 | Have fun! |