| Copyright (c) 2002-2010, International Business Machines Corporation and others. All Rights Reserved. |
| |
| |
| IMPORTANT: |
| |
| This sample was originally intended as an exercise for the ICU Workshop (September 2000). |
| The code currently provided in the solution file is the answer to the exercises, each step can still be found in the 'answers' subdirectory. |
| |
| |
| |
| |
| http://www.icu-project.org/docs/workshop_2000/agenda.html |
| |
| Day 2: September 12th 2000 |
| Pre-requisites: |
| 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://www.icu-project.org/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 |
| ------------ |
| |
| |
| This exercise was first developed and tested on ICU release 1.6.0, Win32, |
| Microsoft Visual C++ 6.0. It should work on other ICU releases and |
| other platforms as well. |
| |
| MSVC: |
| Open the file "msgfmt.sln" in Microsoft Visual C++. |
| |
| 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. |
| |
| 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! |