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