| Copyright (C) 2016 and later: Unicode, Inc. and others. | |
| License & terms of use: http://www.unicode.org/copyright.html | |
| 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! |