| 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. | |
| ** Workshop homepage is: | |
| http://www.icu-project.org/docs/workshop_2000/agenda.html | |
| #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 "datefmt.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 a list of languages. | |
| Problem 1: Basic Date Formatting (Easy) | |
| Create a calendar, and use it to get the UDate for June 4, 1999, | |
| 0:00 GMT (or any date of your choosing). You will have to create a | |
| TimeZone (use the createZone() function already defined in main.cpp) | |
| and a Calendar object, and make the calendar use the time zone. | |
| Once you have the UDate, create a DateFormat object in each of the | |
| languages in the LANGUAGE array, and display the date in that | |
| language. Use the DateFormat::createDateInstance() method to create | |
| the date formatter. | |
| Problem 2: Date Formatting, Specific Time Zone (Medium) | |
| To really localize a time display, one can also specify the time | |
| zone in which the time should be displayed. For each language, | |
| also create different time zones from the TIMEZONE list. | |
| To format a date with a specific calendar and zone, you must deal with | |
| three objects: a DateFormat, a Calendar, and a TimeZone. Each object | |
| must be linked to another in correct sequence: The Calendar must use | |
| the TimeZone, and the DateFormat must use the Calendar. | |
| DateFormat =uses=> Calendar =uses=> TimeZone | |
| Use either setFoo() or adoptFoo() methods, depending on where you | |
| want to have ownership. | |
| NOTE: It's not always desirable to change the time to a local time | |
| zone before display. For instance, if some even occurs at 0:00 GMT | |
| on the first of the month, it's probably clearer to just state that. | |
| Stating that it occurs at 5:00 PM PDT on the day before in the | |
| summer, and 4:00 PM PST on the day before in the winter will just | |
| confuse the issue. | |
| NOTES | |
| ----- | |
| To see a list of system TimeZone IDs, use the TimeZone::create- | |
| AvailableIDs() methods. Alternatively, look at the file | |
| icu/docs/tz.htm. This has a hyperlinked list of current system zones. | |
| 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! |