You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
3.6 KiB
108 lines
3.6 KiB
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!
|