Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology."— Presentation transcript:

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

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

3 Cupertino, CA, USA / September, 2000First 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

4 Cupertino, CA, USA / September, 2000First 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

5 Cupertino, CA, USA / September, 2000First 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

6 Cupertino, CA, USA / September, 2000First 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

7 Cupertino, CA, USA / September, 2000First 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

8 Cupertino, CA, USA / September, 2000First 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

9 Cupertino, CA, USA / September, 2000First 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

10 Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop10 Data Conversion Conversion happens implicitly during formatting and parsing Conversion can also be done explicitly

11 Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop11 Date and Time

12 Cupertino, CA, USA / September, 2000First 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)

13 Cupertino, CA, USA / September, 2000First 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)

14 Cupertino, CA, USA / September, 2000First 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

15 Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop15 Date and Time Components Fit together in a specific nested pattern DateFormat Calendar TimeZone

16 Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop16 Date and Time Components Fit together in a specific nested pattern 1)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

17 Cupertino, CA, USA / September, 2000First 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

18 Cupertino, CA, USA / September, 2000First 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

19 Cupertino, CA, USA / September, 2000First 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();

20 Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop20 Detail: Calendar Fields Conversion of UDate to fields cal.setTime(myUDate); int32_t month = cal.get(MONTH);

21 Cupertino, CA, USA / September, 2000First 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

22 Cupertino, CA, USA / September, 2000First 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”

23 Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop23 Formatter: Types DateFormat already discussed NumberFormat handles “$1,234.56” MessageFormat handles “3 Files Found” ChoiceFormat handles “no files”/“one file”

24 Cupertino, CA, USA / September, 2000First 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

25 Cupertino, CA, USA / September, 2000First 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”)

26 Cupertino, CA, USA / September, 2000First 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

27 Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop27 Exercises Exercise 2 – msgfmt –Use MessageFormat to format a number and date –Use a ChoiceFormat pattern to format the number idiomatically


Download ppt "Cupertino, CA, USA / September, 2000First ICU DeveloperWorkshop1 Date/Time/Number Formatting Alan Liu Globalization Center of Competency IBM Emerging Technology."

Similar presentations


Ads by Google