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