cupertino, ca, usa / september, 2000first icu developerworkshop1 date/time/number formatting alan...

27
Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop 1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology Center

Upload: suzan-hudson

Post on 24-Dec-2015

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop1

Date/Time/Number Formatting

Alan Liu

Globalization Center of Competency

IBM Emerging Technology Center

Page 2: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop2

Overview

Page 3: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop3

The Problem

• Display a date in different languages– English: Friday, June 4, 1999– German: Freitag, 4. Juni 1999– French: vendredi 4 juin 1999

Page 4: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop4

The Problem

• Display a date in different languages

• Convert a time between local time zones– Los Angeles: June 3, 1999 5:00 PM

PDT– New York: June 3, 1999 8:00 PM EDT– Paris: June 4, 1999 2:00 AM CEST

Page 5: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop5

The Problem

• Display a date in different languages

• Convert a time between local time zones

• Handle daylight savings time– Sat. Oct. 28, 2000 3:00 PM PDT + 24 hours =– Sun. Oct. 29, 2000 2:00 PM PST

Page 6: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop6

The Problem

• These problems boil down to:– Formatting– Parsing– Data conversion

• These operations apply to different data types:– Dates and times– Numbers, including currency amounts– Messages

Page 7: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop7

Formatting and Parsing

• Formatting = conversion of binary data to text

• Parsing = conversion of text to binary data

• Different locales use different text to represent the same piece of binary data

Page 8: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop8

Data Conversion

• In different locales, not only the form but also the value of displayed data may change

• Reflects different local conventions: time zone, definition of the week, calendar

• Applies only to dates and times

Page 9: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop9

Data Conversion

• Displayed data values differ depending on the locale

• Underlying binary data does not change

• Displayed data: Calendar fields

• Underlying data: UDate scalar

Page 10: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop10

Data Conversion

• Conversion happens implicitly during formatting and parsing

• Conversion can also be done explicitly

Page 11: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop11

Date and Time

Page 12: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop12

Date and Time

• Date and time stored together as a scalar

• Resolution of 1 millisecond

• Range roughly 70,000 BC to 70,000 AD

• Stored as absolute time independent of local time zones (GMT-based)

Page 13: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop13

Date and Time

• Extensible calendar system

• Rule-based time zones with built-in data for all modern international zones (over 400)

• Rule-based date format with built-in data for many locales (over 140)

Page 14: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop14

Date and Time Components

• UDate: GMT-based date and time (ms)• Calendar: Convert UDate to/from fields• TimeZone: Convert GMT to/from local zone• DateFormat: Convert UDate to/from text

Page 15: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop15

Date and Time Components

• Fit together in a specific nested pattern

DateFormat

Calendar

TimeZone

Page 16: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop16

Date and Time Components

• Fit together in a specific nested pattern1) Create

• TimeZone object zone• Calendar object cal• DateFormat object fmt

2) Set cal’s time zone to zone 3) Set fmt’s calendar to cal

Page 17: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop17

Date and Time Components

• If components are not nested explicitly, then they use default objects, which can lead to errors

• DateFormat uses a default Calendar

• Calendar uses a default TimeZone

Page 18: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop18

Calendar: Two Roles

• Always set to a specific UDate• Converts UDate to/from fields

– Fields are integer values for the month, day, year, hour, minutes, day of week, etc.

– See calendar.h for complete field list

Page 19: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop19

Detail: Calendar Fields

• Conversion of fields to UDate

cal.clear();cal.set(YEAR, 1999);cal.set(MONTH, JUNE);cal.set(DAY_OF_WEEK, MONDAY);cal.set(WEEK_OF_MONTH, 2);UDate d = cal.getTime();

Page 20: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop20

Detail: Calendar Fields

• Conversion of UDate to fields

cal.setTime(myUDate);int32_t month = cal.get(MONTH);

Page 21: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop21

Time Zones

• Standard Olson (UNIX) time zone data• Over 400 international time zones• Does not rely on host OS• No historical time zone support• Time zones always used with calendars

Page 22: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop22

Formatters: Code + Patterns

• Code contains generic pattern engine• Locale resources contain different patterns

– Different groups of patterns for different locales

– Within each group, different patterns for different variants; e.g., one for “Wed 6 Sep 00” and another for “Wednesday 7 September 2000”

Page 23: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop23

Formatter: Types

• DateFormat already discussed• NumberFormat handles “$1,234.56”• MessageFormat handles “3 Files

Found”• ChoiceFormat handles “no

files”/“one file”

Page 24: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop24

Formatters: Pattern Syntax

• Each formatter supports its own pattern syntax• For number and date formats, most users can

use locale data• For message format, users will have to write

their own patterns• See headers for pattern syntax documentation

Page 25: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop25

Future Directions

• Support for time zone aliasing

• Support for traditional calendar systems

• Support for rule-based number formatting (e.g., “three hundred and sixty-four”)

Page 26: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop26

Exercises

• Exercise 1 – datefmt– Use DateFormat to format a date and

time into several localized strings– Convert the date and time into local time

zones

Page 27: Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology

Cupertino, CA, USA / September, 2000 First ICU DeveloperWorkshop27

Exercises

• Exercise 2 – msgfmt– Use MessageFormat to format a number

and date– Use a ChoiceFormat pattern to format

the number idiomatically