16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/******************************************************************** 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * COPYRIGHT: 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (c) 1999-2003, International Business Machines Corporation and 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * others. All Rights Reserved. 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ********************************************************************/ 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/unistr.h" 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/calendar.h" 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/datefmt.h" 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/uclean.h" 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <stdio.h> 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <stdlib.h> 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "util.h" 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * If the ID supplied to TimeZone is not a valid system ID, 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * TimeZone::createTimeZone() will return a GMT zone object. In order 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * to detect this error, we check the ID of the returned zone against 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the ID we requested. If they don't match, we fail with an error. 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZone* createZone(const UnicodeString& id) { 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString str; 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org TimeZone* zone = TimeZone::createTimeZone(id); 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (zone->getID(str) != id) { 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete zone; 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printf("Error: TimeZone::createTimeZone("); 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uprintf(id); 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printf(") returned zone with ID "); 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uprintf(str); 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printf("\n"); 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org exit(1); 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return zone; 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint main(int argc, char **argv) { 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode status = U_ZERO_ERROR; 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString str; 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // The languages in which we will display the date 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static char* LANGUAGE[] = { 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "en", "de", "fr" 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static const int32_t N_LANGUAGE = sizeof(LANGUAGE)/sizeof(LANGUAGE[0]); 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // The time zones in which we will display the time 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static char* TIMEZONE[] = { 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "America/Los_Angeles", 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "America/New_York", 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "Europe/Paris", 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "Europe/Berlin" 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static const int32_t N_TIMEZONE = sizeof(TIMEZONE)/sizeof(TIMEZONE[0]); 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for (int32_t i=0; i<N_LANGUAGE; ++i) { 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale loc(LANGUAGE[i]); 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Display the formatted date string 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printf("Date (%s)\n", LANGUAGE[i]); 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printf("Exiting successfully\n"); 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_cleanup(); 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return 0; 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 67