16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/******************************************************************** 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * COPYRIGHT: 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (c) 1999-2002, 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 <stdio.h> 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <stdlib.h> 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "util.h" 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * If the ID supplied to TimeZone is not a valid system ID, 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * TimeZone::createTimeZone() will return a GMT zone object. In order 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * to detect this error, we check the ID of the returned zone against 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the ID we requested. If they don't match, we fail with an error. 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZone* createZone(const UnicodeString& id) { 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString str; 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org TimeZone* zone = TimeZone::createTimeZone(id); 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (zone->getID(str) != id) { 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete zone; 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printf("Error: TimeZone::createTimeZone("); 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uprintf(id); 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printf(") returned zone with ID "); 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uprintf(str); 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printf("\n"); 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org exit(1); 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return zone; 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint main(int argc, char **argv) { 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Calendar *cal; 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org TimeZone *zone; 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateFormat *fmt; 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode status = U_ZERO_ERROR; 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString str; 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UDate date; 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // The languages in which we will display the date 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static char* LANGUAGE[] = { 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "en", "de", "fr" 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static const int32_t N_LANGUAGE = sizeof(LANGUAGE)/sizeof(LANGUAGE[0]); 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // The time zones in which we will display the time 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static char* TIMEZONE[] = { 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "America/Los_Angeles", 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "America/New_York", 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "Europe/Paris", 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "Europe/Berlin" 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static const int32_t N_TIMEZONE = sizeof(TIMEZONE)/sizeof(TIMEZONE[0]); 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Create a calendar 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org cal = Calendar::createInstance(status); 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org check(status, "Calendar::createInstance"); 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org zone = createZone("GMT"); // Create a GMT zone 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org cal->adoptTimeZone(zone); 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org cal->clear(); 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org cal->set(1999, Calendar::JUNE, 4); 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org date = cal->getTime(status); 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org check(status, "Calendar::getTime"); 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for (int32_t i=0; i<N_LANGUAGE; ++i) { 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale loc(LANGUAGE[i]); 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Create a formatter for DATE 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fmt = DateFormat::createDateInstance(DateFormat::kFull, loc); 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Format the date 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org str.remove(); 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fmt->format(date, str, status); 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Display the formatted date string 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printf("Date (%s): ", LANGUAGE[i]); 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uprintf(escape(str)); 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printf("\n\n"); 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printf("Exiting successfully\n"); 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return 0; 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 88