1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/******************************************************************** 2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * COPYRIGHT: 3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Copyright (c) 1999-2003, International Business Machines Corporation and 4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * others. All Rights Reserved. 5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ********************************************************************/ 6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/unistr.h" 8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/calendar.h" 9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/datefmt.h" 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/uclean.h" 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <stdio.h> 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <stdlib.h> 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "util.h" 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * If the ID supplied to TimeZone is not a valid system ID, 17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * TimeZone::createTimeZone() will return a GMT zone object. In order 18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * to detect this error, we check the ID of the returned zone against 19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * the ID we requested. If they don't match, we fail with an error. 20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruTimeZone* createZone(const UnicodeString& id) { 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UnicodeString str; 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru TimeZone* zone = TimeZone::createTimeZone(id); 24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if (zone->getID(str) != id) { 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru delete zone; 26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printf("Error: TimeZone::createTimeZone("); 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru uprintf(id); 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printf(") returned zone with ID "); 29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru uprintf(str); 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printf("\n"); 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru exit(1); 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return zone; 34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruint main(int argc, char **argv) { 37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UnicodeString str; 40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru // The languages in which we will display the date 42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru static char* LANGUAGE[] = { 43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru "en", "de", "fr" 44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru }; 45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru static const int32_t N_LANGUAGE = sizeof(LANGUAGE)/sizeof(LANGUAGE[0]); 46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru // The time zones in which we will display the time 48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru static char* TIMEZONE[] = { 49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru "America/Los_Angeles", 50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru "America/New_York", 51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru "Europe/Paris", 52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru "Europe/Berlin" 53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru }; 54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru static const int32_t N_TIMEZONE = sizeof(TIMEZONE)/sizeof(TIMEZONE[0]); 55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru for (int32_t i=0; i<N_LANGUAGE; ++i) { 57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru Locale loc(LANGUAGE[i]); 58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru // Display the formatted date string 60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printf("Date (%s)\n", LANGUAGE[i]); 61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printf("Exiting successfully\n"); 64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_cleanup(); 65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return 0; 66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 67