2000-09-06 19:49:13 +00:00
|
|
|
This is an exercise for the ICU Workshop (September 2000).
|
|
|
|
|
2002-04-15 23:32:30 +00:00
|
|
|
http://oss.software.ibm.com/icu/docs/workshop_2000/agenda.html
|
|
|
|
|
2000-09-06 19:49:13 +00:00
|
|
|
Day 2: September 12th 2000
|
2002-04-15 23:32:30 +00:00
|
|
|
Pre-requisites:
|
2000-09-06 19:49:13 +00:00
|
|
|
1. All the hardware and software requirements from Day 1.
|
|
|
|
2. Attended or fully understand Day 1 material.
|
|
|
|
3. Read through the ICU user's guide at
|
|
|
|
http://oss.software.ibm.com/icu/userguide/.
|
|
|
|
|
|
|
|
#Date/Time/Number Formatting Support
|
|
|
|
9:30am - 10:30am
|
|
|
|
Alan Liu
|
|
|
|
|
|
|
|
Topics:
|
|
|
|
1. What is the date/time support in ICU?
|
|
|
|
2. What is the timezone support in ICU?
|
|
|
|
3. What kind of formatting and parsing support is available in ICU, i.e.
|
|
|
|
NumberFormat, DateFormat, MessageFormat?
|
|
|
|
|
|
|
|
|
|
|
|
INSTRUCTIONS
|
|
|
|
------------
|
|
|
|
|
2002-04-15 23:32:30 +00:00
|
|
|
|
|
|
|
This exercise was first developed and tested on ICU release 1.6.0, Win32,
|
2000-09-06 19:49:13 +00:00
|
|
|
Microsoft Visual C++ 6.0. It should work on other ICU releases and
|
2000-09-06 21:57:48 +00:00
|
|
|
other platforms as well.
|
2000-09-06 19:49:13 +00:00
|
|
|
|
2002-04-15 23:32:30 +00:00
|
|
|
MSVC:
|
|
|
|
Open the file "msgfmt.dsw" in Microsoft Visual C++.
|
2000-09-06 19:49:13 +00:00
|
|
|
|
2002-04-15 23:32:30 +00:00
|
|
|
Unix:
|
|
|
|
- Build and install ICU with a prefix, for example '--prefix=/home/srl/ICU'
|
|
|
|
- Set the variable ICU_PREFIX=/home/srl/ICU and use GNU make in
|
|
|
|
this directory.
|
|
|
|
- You may use 'make check' to invoke this sample.
|
2000-09-06 19:49:13 +00:00
|
|
|
|
|
|
|
PROBLEMS
|
|
|
|
--------
|
|
|
|
|
|
|
|
Problem 0:
|
|
|
|
|
|
|
|
Set up the program, build it, and run it. To start with, the
|
|
|
|
program prints out the word "Message".
|
|
|
|
|
|
|
|
Problem 1: Basic Message Formatting (Easy)
|
|
|
|
|
|
|
|
Use a MessageFormat to create a message that prints out "Received
|
|
|
|
<n> argument(s) on <d>.", where n is the number of command line
|
|
|
|
arguments (use argc-1), and d is the date (use Calendar::getNow()).
|
|
|
|
|
|
|
|
HINT: Your message pattern should have a "number" element and a
|
|
|
|
"date" element, and you will need to use Formattable.
|
|
|
|
|
|
|
|
Problem 2: ChoiceFormat (Medium)
|
|
|
|
|
|
|
|
We can do better than "argument(s)". Instead, we can display more
|
|
|
|
idiomatic strings, such as "no arguments", "one argument", "two
|
|
|
|
arguments", and for higher values, we can use a number format.
|
|
|
|
|
|
|
|
This kind of value-based switching is done using a ChoiceFormat.
|
|
|
|
However, you seldom needs to create a ChoiceFormat by itself.
|
|
|
|
Instead, most of the time you will supply the ChoiceFormat pattern
|
|
|
|
within a MessageFormat pattern.
|
|
|
|
|
|
|
|
Use a ChoiceFormat pattern within the MessageFormat pattern, instead
|
|
|
|
of the "number" element, to display more idiomatic strings.
|
|
|
|
|
|
|
|
EXTRA: Embed a number element within the choice element to handle
|
|
|
|
values greater than two.
|
|
|
|
|
|
|
|
|
|
|
|
ANSWERS
|
|
|
|
-------
|
|
|
|
|
|
|
|
The exercise includes answers. These are in the "answers" directory,
|
|
|
|
and are numbered 1, 2, etc.
|
|
|
|
|
|
|
|
If you get stuck and you want to move to the next step, copy the
|
|
|
|
answers file into the main directory in order to proceed. E.g.,
|
|
|
|
"main_1.cpp" contains the original "main.cpp" file. "main_2.cpp"
|
|
|
|
contains the "main.cpp" file after problem 1. Etc.
|
|
|
|
|
|
|
|
|
|
|
|
Have fun!
|