1103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/* 2103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius******************************************************************************* 3fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius* Copyright (C) 2011-2014, International Business Machines Corporation and 4fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius* others. All Rights Reserved. 5103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius******************************************************************************* 6103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius*/ 7103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#ifndef __TZFMT_H 8103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#define __TZFMT_H 9103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 10103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/** 1159d709d503bab6e2b61931737e662dd293b40578ccornelius * \file 12103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * \brief C++ API: TimeZoneFormat 13103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 14103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 15103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#include "unicode/utypes.h" 16103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 17103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#if !UCONFIG_NO_FORMATTING 18103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 19103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#include "unicode/format.h" 20103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#include "unicode/timezone.h" 21103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#include "unicode/tznames.h" 22103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 23103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusU_CDECL_BEGIN 24103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/** 25103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Constants for time zone display format style used by format/parse APIs 26103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * in TimeZoneFormat. 2759d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 28103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 29103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliustypedef enum UTimeZoneFormatStyle { 30103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 31103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Generic location format, such as "United States Time (New York)", "Italy Time" 3259d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 33103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 34103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UTZFMT_STYLE_GENERIC_LOCATION, 35103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 36103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Generic long non-location format, such as "Eastern Time". 3759d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 38103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 39103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UTZFMT_STYLE_GENERIC_LONG, 40103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 41103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Generic short non-location format, such as "ET". 4259d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 43103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 44103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UTZFMT_STYLE_GENERIC_SHORT, 45103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 46103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Specific long format, such as "Eastern Standard Time". 4759d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 48103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 49103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UTZFMT_STYLE_SPECIFIC_LONG, 50103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 51103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Specific short format, such as "EST", "PDT". 5259d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 53103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 54103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UTZFMT_STYLE_SPECIFIC_SHORT, 55103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 56103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Localized GMT offset format, such as "GMT-05:00", "UTC+0100" 5759d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 58103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 59103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UTZFMT_STYLE_LOCALIZED_GMT, 60103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Short localized GMT offset format, such as "GMT-5", "UTC+1:30" 628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * This style is equivalent to the LDML date format pattern "O". 63fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_STYLE_LOCALIZED_GMT_SHORT, 668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Short ISO 8601 local time difference (basic format) or the UTC indicator. 688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * For example, "-05", "+0530", and "Z"(UTC). 698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * This style is equivalent to the LDML date format pattern "X". 70fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_STYLE_ISO_BASIC_SHORT, 738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Short ISO 8601 locale time difference (basic format). 758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * For example, "-05" and "+0530". 768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * This style is equivalent to the LDML date format pattern "x". 77fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_STYLE_ISO_BASIC_LOCAL_SHORT, 808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Fixed width ISO 8601 local time difference (basic format) or the UTC indicator. 828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * For example, "-0500", "+0530", and "Z"(UTC). 838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * This style is equivalent to the LDML date format pattern "XX". 84fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_STYLE_ISO_BASIC_FIXED, 878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Fixed width ISO 8601 local time difference (basic format). 898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * For example, "-0500" and "+0530". 908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * This style is equivalent to the LDML date format pattern "xx". 91fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_STYLE_ISO_BASIC_LOCAL_FIXED, 948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * ISO 8601 local time difference (basic format) with optional seconds field, or the UTC indicator. 968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * For example, "-0500", "+052538", and "Z"(UTC). 978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * This style is equivalent to the LDML date format pattern "XXXX". 98fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 998393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 1008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_STYLE_ISO_BASIC_FULL, 1018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 1028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * ISO 8601 local time difference (basic format) with optional seconds field. 1038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * For example, "-0500" and "+052538". 1048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * This style is equivalent to the LDML date format pattern "xxxx". 105fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 1068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 1078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_STYLE_ISO_BASIC_LOCAL_FULL, 1088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 1098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Fixed width ISO 8601 local time difference (extended format) or the UTC indicator. 1108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * For example, "-05:00", "+05:30", and "Z"(UTC). 1118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * This style is equivalent to the LDML date format pattern "XXX". 112fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 1138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 1148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_STYLE_ISO_EXTENDED_FIXED, 1158393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 1168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Fixed width ISO 8601 local time difference (extended format). 1178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * For example, "-05:00" and "+05:30". 1188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * This style is equivalent to the LDML date format pattern "xxx" and "ZZZZZ". 119fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 1208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 1218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_STYLE_ISO_EXTENDED_LOCAL_FIXED, 1228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 1238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * ISO 8601 local time difference (extended format) with optional seconds field, or the UTC indicator. 1248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * For example, "-05:00", "+05:25:38", and "Z"(UTC). 1258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * This style is equivalent to the LDML date format pattern "XXXXX". 126fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 1278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 1288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_STYLE_ISO_EXTENDED_FULL, 1298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 1308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * ISO 8601 local time difference (extended format) with optional seconds field. 1318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * For example, "-05:00" and "+05:25:38". 1328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * This style is equivalent to the LDML date format pattern "xxxxx". 133fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 1348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 1358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_STYLE_ISO_EXTENDED_LOCAL_FULL, 1368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 1378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Time Zone ID, such as "America/Los_Angeles". 138fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 1398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 1408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_STYLE_ZONE_ID, 1418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 1428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Short Time Zone ID (BCP 47 Unicode location extension, time zone type value), such as "uslax". 143fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 1448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 1458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_STYLE_ZONE_ID_SHORT, 1468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 1478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Exemplar location, such as "Los Angeles" and "Paris". 148fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 149103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 1508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_STYLE_EXEMPLAR_LOCATION 151103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} UTimeZoneFormatStyle; 152103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 153103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/** 154103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Constants for GMT offset pattern types. 15559d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 156103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 157103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliustypedef enum UTimeZoneFormatGMTOffsetPatternType { 158103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 1598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Positive offset with hours and minutes fields 16059d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 161103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 162103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UTZFMT_PAT_POSITIVE_HM, 163103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 1648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Positive offset with hours, minutes and seconds fields 16559d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 166103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 167103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UTZFMT_PAT_POSITIVE_HMS, 168103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 1698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Negative offset with hours and minutes fields 17059d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 171103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 172103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UTZFMT_PAT_NEGATIVE_HM, 173103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 1748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Negative offset with hours, minutes and seconds fields 17559d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 176103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 1778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_PAT_NEGATIVE_HMS, 1788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 1798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Positive offset with hours field 180fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 1818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 1828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_PAT_POSITIVE_H, 1838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 1848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Negative offset with hours field 185fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 1868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 1878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UTZFMT_PAT_NEGATIVE_H, 1888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 189fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius /* The following cannot be #ifndef U_HIDE_INTERNAL_API, needed for other .h declarations */ 1908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 1918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Number of UTimeZoneFormatGMTOffsetPatternType types. 1928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @internal 1938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 19459d709d503bab6e2b61931737e662dd293b40578ccornelius UTZFMT_PAT_COUNT = 6 195103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} UTimeZoneFormatGMTOffsetPatternType; 196103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 197103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/** 198103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Constants for time types used by TimeZoneFormat APIs for 199103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * receiving time type (standard time, daylight time or unknown). 20059d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 201103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 202103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliustypedef enum UTimeZoneFormatTimeType { 203103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 204103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Unknown 20559d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 206103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 207103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UTZFMT_TIME_TYPE_UNKNOWN, 208103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 209103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Standard time 21059d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 211103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 212103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UTZFMT_TIME_TYPE_STANDARD, 213103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 214103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Daylight saving time 21559d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 216103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 217103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UTZFMT_TIME_TYPE_DAYLIGHT 218103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} UTimeZoneFormatTimeType; 219103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 220103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/** 221103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Constants for parse option flags, used for specifying optional parse behavior. 22259d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 223103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 224103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliustypedef enum UTimeZoneFormatParseOption { 225103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 226103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * No option. 22759d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 228103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 229103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UTZFMT_PARSE_OPTION_NONE = 0x00, 230103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 231103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * When a time zone display name is not found within a set of display names 232103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * used for the specified style, look for the name from display names used 233103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * by other styles. 23459d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 235103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 236103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UTZFMT_PARSE_OPTION_ALL_STYLES = 0x01 237f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius#ifndef U_HIDE_DRAFT_API 238f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius , 239f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius /** 240f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * When parsing a time zone display name in UTZFMT_STYLE_SPECIFIC_SHORT, 241f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * look for the IANA tz database compatible zone abbreviations in addition 242f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * to the localized names coming from the {@link TimeZoneNames} currently 243f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * used by the {@link TimeZoneFormat}. 244f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * @draft ICU 54 245f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius */ 246f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UTZFMT_PARSE_OPTION_TZ_DATABASE_ABBREVIATIONS = 0x02 247f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius#endif /* U_HIDE_DRAFT_API */ 248103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} UTimeZoneFormatParseOption; 249103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 250103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusU_CDECL_END 251103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 252103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusU_NAMESPACE_BEGIN 253103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 254103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusclass TimeZoneGenericNames; 255f9878a236aa0d9662d8e40cafdaf2e04cd615835ccorneliusclass TZDBTimeZoneNames; 256103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusclass UVector; 257103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 258103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/** 259103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * <code>TimeZoneFormat</code> supports time zone display name formatting and parsing. 260103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * An instance of TimeZoneFormat works as a subformatter of {@link SimpleDateFormat}, 261103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * but you can also directly get a new instance of <code>TimeZoneFormat</code> and 262103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * formatting/parsing time zone display names. 263103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * <p> 264103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * ICU implements the time zone display names defined by <a href="http://www.unicode.org/reports/tr35/">UTS#35 265103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Unicode Locale Data Markup Language (LDML)</a>. {@link TimeZoneNames} represents the 266103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * time zone display name data model and this class implements the algorithm for actual 267103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * formatting and parsing. 26859d709d503bab6e2b61931737e662dd293b40578ccornelius * 269103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see SimpleDateFormat 270103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see TimeZoneNames 27159d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 272103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 273103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusclass U_I18N_API TimeZoneFormat : public Format { 274103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliuspublic: 275103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 276103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Copy constructor. 27759d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 278103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 279103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius TimeZoneFormat(const TimeZoneFormat& other); 280103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 281103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 282103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Destructor. 28359d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 284103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 285103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual ~TimeZoneFormat(); 286103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 287103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 288103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Assignment operator. 28959d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 290103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 291103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius TimeZoneFormat& operator=(const TimeZoneFormat& other); 292103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 293103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 294103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Return true if the given Format objects are semantically equal. 295103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Objects of different subclasses are considered unequal. 296103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param other The object to be compared with. 297103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return Return TRUE if the given Format objects are semantically equal. 298103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Objects of different subclasses are considered unequal. 29959d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 300103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 301103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual UBool operator==(const Format& other) const; 302103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 303103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 304103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Clone this object polymorphically. The caller is responsible 305103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * for deleting the result when done. 306103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return A copy of the object 30759d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 308103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 309103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual Format* clone() const; 310103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 311103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 312103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Creates an instance of <code>TimeZoneFormat</code> for the given locale. 313103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param locale The locale. 314fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @param status Receives the status. 315103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return An instance of <code>TimeZoneFormat</code> for the given locale, 316103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * owned by the caller. 31759d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 318103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 319103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius static TimeZoneFormat* U_EXPORT2 createInstance(const Locale& locale, UErrorCode& status); 320103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 321103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 322103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns the time zone display name data used by this instance. 323103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return The time zone display name data. 32459d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 325103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 326103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const TimeZoneNames* getTimeZoneNames() const; 327103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 328103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 329103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Sets the time zone display name data to this format instnace. 330103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * The caller should not delete the TimeZoenNames object after it is adopted 331103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * by this call. 332103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param tznames TimeZoneNames object to be adopted. 33359d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 334103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 335103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void adoptTimeZoneNames(TimeZoneNames *tznames); 336103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 337103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 338103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Sets the time zone display name data to this format instnace. 339103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param tznames TimeZoneNames object to be set. 34059d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 341103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 342103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void setTimeZoneNames(const TimeZoneNames &tznames); 343103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 344103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 345103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns the localized GMT format pattern. 346103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param pattern Receives the localized GMT format pattern. 347103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return A reference to the result pattern. 348103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see #setGMTPattern 34959d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 350103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 351103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString& getGMTPattern(UnicodeString& pattern) const; 352103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 353103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 354103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Sets the localized GMT format pattern. The pattern must contain 355103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * a single argument {0}, for example "GMT {0}". 356103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param pattern The localized GMT format pattern to be used by this object. 357103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param status Recieves the status. 358103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see #getGMTPattern 35959d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 360103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 361103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void setGMTPattern(const UnicodeString& pattern, UErrorCode& status); 362103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 363103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 364103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns the offset pattern used for localized GMT format. 365103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param type The offset pattern type enum. 366103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param pattern Receives the offset pattern. 367103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return A reference to the result pattern. 368103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see #setGMTOffsetPattern 36959d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 370103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 371103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString& getGMTOffsetPattern(UTimeZoneFormatGMTOffsetPatternType type, UnicodeString& pattern) const; 372103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 373103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 374103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Sets the offset pattern for the given offset type. 375103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param type The offset pattern type enum. 376103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param pattern The offset pattern used for localized GMT format for the type. 377103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param status Receives the status. 378103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see #getGMTOffsetPattern 37959d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 380103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 381103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void setGMTOffsetPattern(UTimeZoneFormatGMTOffsetPatternType type, const UnicodeString& pattern, UErrorCode& status); 382103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 383103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 38454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Returns the decimal digit characters used for localized GMT format. 38554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * The return string contains exactly 10 code points (may include Unicode 38654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * supplementary character) representing digit 0 to digit 9 in the ascending 38754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * order. 388103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param digits Receives the decimal digits used for localized GMT format. 389103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see #setGMTOffsetDigits 39059d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 391103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 392103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString& getGMTOffsetDigits(UnicodeString& digits) const; 393103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 394103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 395103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Sets the decimal digit characters used for localized GMT format. 39654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * The input <code>digits</code> must contain exactly 10 code points 39754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * (Unicode supplementary characters are also allowed) representing 39854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * digit 0 to digit 9 in the ascending order. When the input <code>digits</code> 39954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * does not satisfy the condition, <code>U_ILLEGAL_ARGUMENT_ERROR</code> 40054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * will be set to the return status. 401103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param digits The decimal digits used for localized GMT format. 402103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param status Receives the status. 403103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see #getGMTOffsetDigits 40459d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 405103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 406103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void setGMTOffsetDigits(const UnicodeString& digits, UErrorCode& status); 407103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 408103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 409103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns the localized GMT format string for GMT(UTC) itself (GMT offset is 0). 410103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param gmtZeroFormat Receives the localized GMT string string for GMT(UTC) itself. 411103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return A reference to the result GMT string. 412103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see #setGMTZeroFormat 41359d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 414103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 415103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString& getGMTZeroFormat(UnicodeString& gmtZeroFormat) const; 416103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 417103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 418103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Sets the localized GMT format string for GMT(UTC) itself (GMT offset is 0). 419103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param gmtZeroFormat The localized GMT format string for GMT(UTC). 420103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param status Receives the status. 421103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see #getGMTZeroFormat 42259d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 423103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 424103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void setGMTZeroFormat(const UnicodeString& gmtZeroFormat, UErrorCode& status); 425103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 426103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 427103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns the bitwise flags of UTimeZoneFormatParseOption representing the default parse 428103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * options used by this object. 429103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return the default parse options. 430103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see ParseOption 43159d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 432103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 43354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius uint32_t getDefaultParseOptions(void) const; 434103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 435103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 436103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Sets the default parse options. 437103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * <p><b>Note</b>: By default, an instance of <code>TimeZoneFormat</code> 438103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * created by {@link #createInstance} has no parse options set (UTZFMT_PARSE_OPTION_NONE). 439103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * To specify multipe options, use bitwise flags of UTimeZoneFormatParseOption. 440103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see #UTimeZoneFormatParseOption 44159d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 442103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 44354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius void setDefaultParseOptions(uint32_t flags); 444103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 445103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 4468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Returns the ISO 8601 basic time zone string for the given offset. 4478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * For example, "-08", "-0830" and "Z" 44859d709d503bab6e2b61931737e662dd293b40578ccornelius * 4498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param offset the offset from GMT(UTC) in milliseconds. 4508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param useUtcIndicator true if ISO 8601 UTC indicator "Z" is used when the offset is 0. 4518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param isShort true if shortest form is used. 4528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param ignoreSeconds true if non-zero offset seconds is appended. 4538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param result Receives the ISO format string. 45454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param status Receives the status 4558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @return the ISO 8601 basic format. 4568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @see #formatOffsetISO8601Extended 4578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @see #parseOffsetISO8601 458fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 459103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 4608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UnicodeString& formatOffsetISO8601Basic(int32_t offset, UBool useUtcIndicator, UBool isShort, UBool ignoreSeconds, 4618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UnicodeString& result, UErrorCode& status) const; 462103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 463103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 4648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Returns the ISO 8601 extended time zone string for the given offset. 4658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * For example, "-08:00", "-08:30" and "Z" 46659d709d503bab6e2b61931737e662dd293b40578ccornelius * 4678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param offset the offset from GMT(UTC) in milliseconds. 4688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param useUtcIndicator true if ISO 8601 UTC indicator "Z" is used when the offset is 0. 4698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param isShort true if shortest form is used. 4708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param ignoreSeconds true if non-zero offset seconds is appended. 4718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param result Receives the ISO format string. 47254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param status Receives the status 4738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @return the ISO 8601 basic format. 4748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @see #formatOffsetISO8601Extended 475103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see #parseOffsetISO8601 476fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 477103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 4788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UnicodeString& formatOffsetISO8601Extended(int32_t offset, UBool useUtcIndicator, UBool isShort, UBool ignoreSeconds, 4798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UnicodeString& result, UErrorCode& status) const; 480103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 481103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 482103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns the localized GMT(UTC) offset format for the given offset. 483103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * The localized GMT offset is defined by; 484103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * <ul> 485103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * <li>GMT format pattern (e.g. "GMT {0}" - see {@link #getGMTPattern}) 486103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * <li>Offset time pattern (e.g. "+HH:mm" - see {@link #getGMTOffsetPattern}) 487103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * <li>Offset digits (e.g. "0123456789" - see {@link #getGMTOffsetDigits}) 488103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * <li>GMT zero format (e.g. "GMT" - see {@link #getGMTZeroFormat}) 489103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * </ul> 4908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * This format always uses 2 digit hours and minutes. When the given offset has non-zero 4918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * seconds, 2 digit seconds field will be appended. For example, 4928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * GMT+05:00 and GMT+05:28:06. 493103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param offset the offset from GMT(UTC) in milliseconds. 49454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param status Receives the status 495103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param result Receives the localized GMT format string. 496103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return A reference to the result. 497103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see #parseOffsetLocalizedGMT 49859d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 499103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 500103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString& formatOffsetLocalizedGMT(int32_t offset, UnicodeString& result, UErrorCode& status) const; 501103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 5028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 5038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Returns the short localized GMT(UTC) offset format for the given offset. 5048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * The short localized GMT offset is defined by; 5058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * <ul> 5068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * <li>GMT format pattern (e.g. "GMT {0}" - see {@link #getGMTPattern}) 5078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * <li>Offset time pattern (e.g. "+HH:mm" - see {@link #getGMTOffsetPattern}) 5088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * <li>Offset digits (e.g. "0123456789" - see {@link #getGMTOffsetDigits}) 5098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * <li>GMT zero format (e.g. "GMT" - see {@link #getGMTZeroFormat}) 5108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * </ul> 5118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * This format uses the shortest representation of offset. The hours field does not 5128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * have leading zero and lower fields with zero will be truncated. For example, 5138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * GMT+5 and GMT+530. 5148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param offset the offset from GMT(UTC) in milliseconds. 5158393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param status Receives the status 5168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param result Receives the short localized GMT format string. 5178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @return A reference to the result. 5188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @see #parseOffsetShortLocalizedGMT 519fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 5208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 5218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UnicodeString& formatOffsetShortLocalizedGMT(int32_t offset, UnicodeString& result, UErrorCode& status) const; 5228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 52354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius using Format::format; 52454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 525103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 526103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns the display name of the time zone at the given date for the style. 527103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param style The style (e.g. <code>UTZFMT_STYLE_GENERIC_LONG</code>, <code>UTZFMT_STYLE_LOCALIZED_GMT</code>...) 528103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param tz The time zone. 529103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param date The date. 530103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param name Receives the display name. 531103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param timeType the output argument for receiving the time type (standard/daylight/unknown) 532103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * used for the display name, or NULL if the information is not necessary. 533103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return A reference to the result 534103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see #UTimeZoneFormatStyle 535103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see #UTimeZoneFormatTimeType 53659d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 537103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 538103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual UnicodeString& format(UTimeZoneFormatStyle style, const TimeZone& tz, UDate date, 539103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString& name, UTimeZoneFormatTimeType* timeType = NULL) const; 540103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 541103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 542103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns offset from GMT(UTC) in milliseconds for the given ISO 8601 543103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * style time zone string. When the given string is not an ISO 8601 time zone 544103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * string, this method sets the current position as the error index 545103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * to <code>ParsePosition pos</code> and returns 0. 54654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param text The text contains ISO8601 style time zone string (e.g. "-08:00", "Z") 547103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * at the position. 548103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param pos The ParsePosition object. 549103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return The offset from GMT(UTC) in milliseconds for the given ISO 8601 style 550103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * time zone string. 5518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @see #formatOffsetISO8601Basic 5528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @see #formatOffsetISO8601Extended 55359d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 554103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 555103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t parseOffsetISO8601(const UnicodeString& text, ParsePosition& pos) const; 556103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 557103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 558103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns offset from GMT(UTC) in milliseconds for the given localized GMT 559103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * offset format string. When the given string cannot be parsed, this method 560103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * sets the current position as the error index to <code>ParsePosition pos</code> 561103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * and returns 0. 562103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param text The text contains a localized GMT offset string at the position. 563103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param pos The ParsePosition object. 564103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return The offset from GMT(UTC) in milliseconds for the given localized GMT 565103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * offset format string. 566103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see #formatOffsetLocalizedGMT 56759d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 568103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 569103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t parseOffsetLocalizedGMT(const UnicodeString& text, ParsePosition& pos) const; 570103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 5718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 5728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Returns offset from GMT(UTC) in milliseconds for the given short localized GMT 5738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * offset format string. When the given string cannot be parsed, this method 5748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * sets the current position as the error index to <code>ParsePosition pos</code> 5758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * and returns 0. 5768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param text The text contains a short localized GMT offset string at the position. 5778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param pos The ParsePosition object. 5788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @return The offset from GMT(UTC) in milliseconds for the given short localized GMT 5798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * offset format string. 5808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @see #formatOffsetShortLocalizedGMT 581fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 5828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 5838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius int32_t parseOffsetShortLocalizedGMT(const UnicodeString& text, ParsePosition& pos) const; 5848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 585103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 586103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns a <code>TimeZone</code> by parsing the time zone string according to 587103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * the given parse position, the specified format style and parse options. 58859d709d503bab6e2b61931737e662dd293b40578ccornelius * 589103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param text The text contains a time zone string at the position. 590103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param style The format style 591103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param pos The position. 592103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param parseOptions The parse options repesented by bitwise flags of UTimeZoneFormatParseOption. 593103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param timeType The output argument for receiving the time type (standard/daylight/unknown), 594103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * or NULL if the information is not necessary. 595103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return A <code>TimeZone</code>, or null if the input could not be parsed. 596103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see UTimeZoneFormatStyle 597103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see UTimeZoneFormatParseOption 598103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see UTimeZoneFormatTimeType 59959d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 600103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 601103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual TimeZone* parse(UTimeZoneFormatStyle style, const UnicodeString& text, ParsePosition& pos, 602103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t parseOptions, UTimeZoneFormatTimeType* timeType = NULL) const; 603103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 604103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 605103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns a <code>TimeZone</code> by parsing the time zone string according to 606103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * the given parse position, the specified format style and the default parse options. 60759d709d503bab6e2b61931737e662dd293b40578ccornelius * 608103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param text The text contains a time zone string at the position. 609103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param style The format style 610103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param pos The position. 611103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param timeType The output argument for receiving the time type (standard/daylight/unknown), 612103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * or NULL if the information is not necessary. 613103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return A <code>TimeZone</code>, or null if the input could not be parsed. 614103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see UTimeZoneFormatStyle 615103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see UTimeZoneFormatParseOption 616103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see UTimeZoneFormatTimeType 61759d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 618103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 619103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius TimeZone* parse(UTimeZoneFormatStyle style, const UnicodeString& text, ParsePosition& pos, 620103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UTimeZoneFormatTimeType* timeType = NULL) const; 621103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 622103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /* ---------------------------------------------- 623103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Format APIs 624103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * ---------------------------------------------- */ 625103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 626103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 627103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Format an object to produce a time zone display string using localized GMT offset format. 628103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * This method handles Formattable objects with a <code>TimeZone</code>. If a the Formattable 629103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * object type is not a <code>TimeZone</code>, then it returns a failing UErrorCode. 630103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param obj The object to format. Must be a <code>TimeZone</code>. 631103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param appendTo Output parameter to receive result. Result is appended to existing contents. 632103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param pos On input: an alignment field, if desired. On output: the offsets of the alignment field. 633103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param status Output param filled with success/failure status. 634103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return Reference to 'appendTo' parameter. 63559d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 636103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 637103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, 638103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius FieldPosition& pos, UErrorCode& status) const; 639103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 640103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 641103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Parse a string to produce an object. This methods handles parsing of 642103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * time zone display strings into Formattable objects with <code>TimeZone</code>. 643103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param source The string to be parsed into an object. 644103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param result Formattable to be set to the parse result. If parse fails, return contents are undefined. 645103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param parse_pos The position to start parsing at. Upon return this param is set to the position after the 646103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * last character successfully parsed. If the source is not parsed successfully, this param 647103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * will remain unchanged. 648103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return A newly created Formattable* object, or NULL on failure. The caller owns this and should 649103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * delete it when done. 65059d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 651103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 652103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual void parseObject(const UnicodeString& source, Formattable& result, ParsePosition& parse_pos) const; 653103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 654103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 655103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * ICU "poor man's RTTI", returns a UClassID for this class. 65659d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 657103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 658103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius static UClassID U_EXPORT2 getStaticClassID(void); 659103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 660103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 661103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * ICU "poor man's RTTI", returns a UClassID for the actual class. 66259d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 663103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 664103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual UClassID getDynamicClassID() const; 665103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 666103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusprotected: 667103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 668103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Constructs a TimeZoneFormat object for the specified locale. 669103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param locale the locale 670103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param status receives the status. 67159d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 672103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 673103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius TimeZoneFormat(const Locale& locale, UErrorCode& status); 674103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 675103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusprivate: 676103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /* Locale of this object */ 677103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius Locale fLocale; 678103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 67959d709d503bab6e2b61931737e662dd293b40578ccornelius /* Stores the region (could be implicit default) */ 680103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius char fTargetRegion[ULOC_COUNTRY_CAPACITY]; 681103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 682103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /* TimeZoneNames object used by this formatter */ 683103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius TimeZoneNames* fTimeZoneNames; 684103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 685103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /* TimeZoneGenericNames object used by this formatter - lazily instantiated */ 686103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius TimeZoneGenericNames* fTimeZoneGenericNames; 687103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 688103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /* Localized GMT format pattern - e.g. "GMT{0}" */ 689103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString fGMTPattern; 690103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 691103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /* Array of offset patterns used by Localized GMT format - e.g. "+HH:mm" */ 6928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UnicodeString fGMTOffsetPatterns[UTZFMT_PAT_COUNT]; 693103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 694103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /* Localized decimal digits used by Localized GMT format */ 695103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UChar32 fGMTOffsetDigits[10]; 696103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 697103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /* Localized GMT zero format - e.g. "GMT" */ 698103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString fGMTZeroFormat; 699103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 700103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /* Bit flags representing parse options */ 70154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius uint32_t fDefParseOptionFlags; 702103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 703103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /* Constant parts of GMT format pattern, populated from localized GMT format pattern*/ 704103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString fGMTPatternPrefix; /* Substring before {0} */ 705103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString fGMTPatternSuffix; /* Substring after {0} */ 706103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 707103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /* Compiled offset patterns generated from fGMTOffsetPatterns[] */ 7088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UVector* fGMTOffsetPatternItems[UTZFMT_PAT_COUNT]; 7098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 7108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UBool fAbuttingOffsetHoursAndMinutes; 711103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 712f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius /* TZDBTimeZoneNames object used for parsing */ 713f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius TZDBTimeZoneNames* fTZDBTimeZoneNames; 714f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius 715103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 716103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns the time zone's specific format string. 717103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param tz the time zone 718103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param stdType the name type used for standard time 719103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param dstType the name type used for daylight time 720103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param date the date 721103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param name receives the time zone's specific format name string 722103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param timeType when null, actual time type is set 723103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return a reference to name. 724103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 725103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString& formatSpecific(const TimeZone& tz, UTimeZoneNameType stdType, UTimeZoneNameType dstType, 726103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UDate date, UnicodeString& name, UTimeZoneFormatTimeType *timeType) const; 727103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 728103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 729103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns the time zone's generic format string. 730103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param tz the time zone 731103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param genType the generic name type 732103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param date the date 733103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param name receives the time zone's generic format name string 734103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return a reference to name. 735103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 736103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString& formatGeneric(const TimeZone& tz, int32_t genType, UDate date, UnicodeString& name) const; 737103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 738103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 739103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Lazily create a TimeZoneGenericNames instance 740103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param status receives the status 741103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return the cached TimeZoneGenericNames. 742103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 743103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const TimeZoneGenericNames* getTimeZoneGenericNames(UErrorCode& status) const; 744103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 745103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 746f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * Lazily create a TZDBTimeZoneNames instance 747f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * @param status receives the status 748f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * @return the cached TZDBTimeZoneNames. 749f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius */ 750f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius const TZDBTimeZoneNames* getTZDBTimeZoneNames(UErrorCode& status) const; 751f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius 752f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius /** 7538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Private method returning the time zone's exemplar location string. 7548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * This method will never return empty. 7558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param tz the time zone 7568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param name receives the time zone's exemplar location name 7578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @return a reference to name. 7588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 7598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UnicodeString& formatExemplarLocation(const TimeZone& tz, UnicodeString& name) const; 7608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 7618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 762103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Private enum specifying a combination of offset fields 763103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 764103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius enum OffsetFields { 765103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius FIELDS_H, 766103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius FIELDS_HM, 767103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius FIELDS_HMS 768103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius }; 769103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 770103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 771103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Parses the localized GMT pattern string and initialize 772103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * localized gmt pattern fields. 773103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param gmtPattern the localized GMT pattern string such as "GMT {0}" 774103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param status U_ILLEGAL_ARGUMENT_ERROR is set when the specified pattern does not 775103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * contain an argument "{0}". 776103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 777103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void initGMTPattern(const UnicodeString& gmtPattern, UErrorCode& status); 778103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 779103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 780103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Parse the GMT offset pattern into runtime optimized format. 781103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param pattern the offset pattern string 782103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param required the required set of fields, such as FIELDS_HM 783103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param status U_ILLEGAL_ARGUMENT is set when the specified pattern does not contain 784103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * pattern letters for the required fields. 785103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return A list of GMTOffsetField objects, or NULL on error. 786103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 787103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius static UVector* parseOffsetPattern(const UnicodeString& pattern, OffsetFields required, UErrorCode& status); 788103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 789103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 7908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Appends seconds field to the offset pattern with hour/minute 791103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Note: This code will be obsoleted once we add hour-minute-second pattern data in CLDR. 7928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param offsetHM the offset pattern including hours and minutes fields 7938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param result the output offset pattern including hour, minute and seconds fields 7948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param status receives the status 7958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @return a reference to result 7968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 7978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius static UnicodeString& expandOffsetPattern(const UnicodeString& offsetHM, UnicodeString& result, UErrorCode& status); 7988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 7998393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 8008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Truncates minutes field to the offset pattern with hour/minute 8018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Note: This code will be obsoleted once we add hour pattern data in CLDR. 8028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param offsetHM the offset pattern including hours and minutes fields 8038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param result the output offset pattern including only hours field 8048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param status receives the status 805103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return a reference to result 806103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 8078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius static UnicodeString& truncateOffsetPattern(const UnicodeString& offsetHM, UnicodeString& result, UErrorCode& status); 808103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 809103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 810103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Break input string into UChar32[]. Each array element represents 811103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * a code point. This method is used for parsing localized digit 812103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * characters and support characters in Unicode supplemental planes. 813103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param str the string 814103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param codeArray receives the result 815103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param capacity the capacity of codeArray 816103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return TRUE when the specified code array is fully filled with code points 817103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * (no under/overflow). 818103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 819103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius static UBool toCodePoints(const UnicodeString& str, UChar32* codeArray, int32_t capacity); 820103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 821103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 8228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Private method supprting all of ISO8601 formats 8238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param offset the offset from GMT(UTC) in milliseconds. 8248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param useUtcIndicator true if ISO 8601 UTC indicator "Z" is used when the offset is 0. 8258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param isShort true if shortest form is used. 8268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param ignoreSeconds true if non-zero offset seconds is appended. 8278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param result Receives the result 8288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param status Receives the status 8298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @return the ISO 8601 basic format. 8308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 8318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UnicodeString& formatOffsetISO8601(int32_t offset, UBool isBasic, UBool useUtcIndicator, 8328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UBool isShort, UBool ignoreSeconds, UnicodeString& result, UErrorCode& status) const; 8338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 8348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 8358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Private method used for localized GMT formatting. 8368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param offset the zone's UTC offset 8378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param isShort true if the short localized GMT format is desired. 8388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param result receives the localized GMT format string 8398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param status receives the status 8408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 8418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UnicodeString& formatOffsetLocalizedGMT(int32_t offset, UBool isShort, UnicodeString& result, UErrorCode& status) const; 8428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 8438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 844103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns offset from GMT(UTC) in milliseconds for the given ISO 8601 style 845103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * (extended format) time zone string. When the given string is not an ISO 8601 time 846103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * zone string, this method sets the current position as the error index 847103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * to <code>ParsePosition pos</code> and returns 0. 848103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param text the text contains ISO 8601 style time zone string (e.g. "-08:00", "Z") 849103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * at the position. 850103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param pos the position, non-negative error index will be set on failure. 851103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param extendedOnly TRUE if parsing the text as ISO 8601 extended offset format (e.g. "-08:00"), 852103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * or FALSE to evaluate the text as basic format. 853103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param hasDigitOffset receiving if the parsed zone string contains offset digits. 854103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return the offset from GMT(UTC) in milliseconds for the given ISO 8601 style 855103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * time zone string. 856103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 857103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t parseOffsetISO8601(const UnicodeString& text, ParsePosition& pos, UBool extendedOnly, 858103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UBool* hasDigitOffset = NULL) const; 859103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 860103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 861103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Appends localized digits to the buffer. 862103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * This code assumes that the input number is 0 - 59 863103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param buf the target buffer 864103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param n the integer number 865103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param minDigits the minimum digits width 866103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 867103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void appendOffsetDigits(UnicodeString& buf, int32_t n, uint8_t minDigits) const; 868103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 869103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 870103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns offset from GMT(UTC) in milliseconds for the given localized GMT 871103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * offset format string. When the given string cannot be parsed, this method 872103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * sets the current position as the error index to <code>ParsePosition pos</code> 873103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * and returns 0. 874103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param text the text contains a localized GMT offset string at the position. 875103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param pos the position, non-negative error index will be set on failure. 8768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param isShort true if this parser to try the short format first 877103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param hasDigitOffset receiving if the parsed zone string contains offset digits. 878103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return the offset from GMT(UTC) in milliseconds for the given localized GMT 879103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * offset format string. 880103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 881103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t parseOffsetLocalizedGMT(const UnicodeString& text, ParsePosition& pos, 8828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UBool isShort, UBool* hasDigitOffset) const; 8838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 8848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 8858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Parse localized GMT format generated by the patter used by this formatter, except 8868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * GMT Zero format. 8878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param text the input text 8888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param start the start index 8898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param isShort true if the short localized format is parsed. 8908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param parsedLen receives the parsed length 8918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @return the parsed offset in milliseconds 8928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 8938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius int32_t parseOffsetLocalizedGMTPattern(const UnicodeString& text, int32_t start, 8948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UBool isShort, int32_t& parsedLen) const; 895103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 896103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 897103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Parses localized GMT offset fields into offset. 898103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param text the input text 899103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param start the start index 9008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param isShort true if this is a short format - currently not used 901103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param parsedLen the parsed length, or 0 on failure. 902103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return the parsed offset in milliseconds. 903103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 9048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius int32_t parseOffsetFields(const UnicodeString& text, int32_t start, UBool isShort, int32_t& parsedLen) const; 9058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 9068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 9078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Parse localized GMT offset fields with the given pattern. 9088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param text the input text 9098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param start the start index 9108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param pattenItems the pattern (already itemized) 9118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param forceSingleHourDigit true if hours field is parsed as a single digit 9128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param hour receives the hour offset field 9138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param min receives the minute offset field 9148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param sec receives the second offset field 9158393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @return the parsed length 9168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 9178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius int32_t parseOffsetFieldsWithPattern(const UnicodeString& text, int32_t start, 9188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UVector* patternItems, UBool forceSingleHourDigit, int32_t& hour, int32_t& min, int32_t& sec) const; 919103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 920103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 921103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Parses abutting localized GMT offset fields (such as 0800) into offset. 922103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param text the input text 923103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param start the start index 924103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param parsedLen the parsed length, or 0 on failure 925103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return the parsed offset in milliseconds. 926103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 927103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t parseAbuttingOffsetFields(const UnicodeString& text, int32_t start, int32_t& parsedLen) const; 928103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 929103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 930103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Parses the input text using the default format patterns (e.g. "UTC{0}"). 931103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param text the input text 932103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param start the start index 933103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param parsedLen the parsed length, or 0 on failure 934103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return the parsed offset in milliseconds. 935103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 936103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t parseOffsetDefaultLocalizedGMT(const UnicodeString& text, int start, int32_t& parsedLen) const; 937103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 938103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 939103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Parses the input GMT offset fields with the default offset pattern. 940103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param text the input text 941103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param start the start index 942103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param separator the separator character, e.g. ':' 943103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param parsedLen the parsed length, or 0 on failure. 944103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return the parsed offset in milliseconds. 945103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 946103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t parseDefaultOffsetFields(const UnicodeString& text, int32_t start, UChar separator, 947103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t& parsedLen) const; 948103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 949103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 950103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Reads an offset field value. This method will stop parsing when 951103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * 1) number of digits reaches <code>maxDigits</code> 952103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * 2) just before already parsed number exceeds <code>maxVal</code> 95359d709d503bab6e2b61931737e662dd293b40578ccornelius * 954103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param text the text 955103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param start the start offset 956103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param minDigits the minimum number of required digits 957103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param maxDigits the maximum number of digits 958103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param minVal the minimum value 959103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param maxVal the maximum value 960103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param parsedLen the actual parsed length. 961103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return the integer value parsed 962103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 963103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t parseOffsetFieldWithLocalizedDigits(const UnicodeString& text, int32_t start, 964103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius uint8_t minDigits, uint8_t maxDigits, uint16_t minVal, uint16_t maxVal, int32_t& parsedLen) const; 965103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 966103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 967103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Reads a single decimal digit, either localized digits used by this object 968103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * or any Unicode numeric character. 969103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param text the text 970103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param start the start index 971103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param len the actual length read from the text 972103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * the start index is not a decimal number. 973103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return the integer value of the parsed digit, or -1 on failure. 974103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 975103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t parseSingleLocalizedDigit(const UnicodeString& text, int32_t start, int32_t& len) const; 976103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 977103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 978103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Formats offset using ASCII digits. The input offset range must be 979103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * within +/-24 hours (exclusive). 980103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param offset The offset 981103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param sep The field separator character or 0 if not required 982103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param minFields The minimum fields 983103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param maxFields The maximum fields 984103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return The offset string 985103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 986103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius static UnicodeString& formatOffsetWithAsciiDigits(int32_t offset, UChar sep, 987103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius OffsetFields minFields, OffsetFields maxFields, UnicodeString& result); 988103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 989103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 990103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Parses offset represented by contiguous ASCII digits. 991103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * <p> 992103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Note: This method expects the input position is already at the start of 993103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * ASCII digits and does not parse sign (+/-). 994103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param text The text contains a sequence of ASCII digits 995103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param pos The parse position 996103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param minFields The minimum Fields to be parsed 997103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param maxFields The maximum Fields to be parsed 9988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param fixedHourWidth true if hours field must be width of 2 999103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return Parsed offset, 0 or positive number. 1000103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 1001103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius static int32_t parseAbuttingAsciiOffsetFields(const UnicodeString& text, ParsePosition& pos, 1002103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius OffsetFields minFields, OffsetFields maxFields, UBool fixedHourWidth); 1003103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 1004103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 1005103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Parses offset represented by ASCII digits and separators. 1006103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * <p> 1007103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Note: This method expects the input position is already at the start of 1008103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * ASCII digits and does not parse sign (+/-). 1009103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param text The text 1010103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param pos The parse position 1011103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param sep The separator character 1012103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param minFields The minimum Fields to be parsed 1013103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param maxFields The maximum Fields to be parsed 1014103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return Parsed offset, 0 or positive number. 1015103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 1016103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius static int32_t parseAsciiOffsetFields(const UnicodeString& text, ParsePosition& pos, UChar sep, 10178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius OffsetFields minFields, OffsetFields maxFields); 1018103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 1019103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 1020103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Unquotes the message format style pattern. 1021103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param pattern the pattern 1022103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param result receive the unquoted pattern. 1023103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return A reference to result. 1024103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 1025103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius static UnicodeString& unquote(const UnicodeString& pattern, UnicodeString& result); 1026103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 1027103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 1028103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Initialize localized GMT format offset hour/min/sec patterns. 1029103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * This method parses patterns into optimized run-time format. 1030103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param status receives the status. 1031103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 1032103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void initGMTOffsetPatterns(UErrorCode& status); 1033103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 1034103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 10358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Check if there are any GMT format offset patterns without 10368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * any separators between hours field and minutes field and update 10378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * fAbuttingOffsetHoursAndMinutes field. This method must be called 10388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * after all patterns are parsed into pattern items. 10398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 10408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius void checkAbuttingHoursAndMinutes(); 10418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 10428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 1043103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Creates an instance of TimeZone for the given offset 1044103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param offset the offset 1045103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return A TimeZone with the given offset 1046103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 1047103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius TimeZone* createTimeZoneForOffset(int32_t offset) const; 1048103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 1049103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 1050103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns the time type for the given name type 1051103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param nameType the name type 1052103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return the time type (unknown/standard/daylight) 1053103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 1054103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius static UTimeZoneFormatTimeType getTimeType(UTimeZoneNameType nameType); 1055103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 10568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 1057103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Returns the time zone ID of a match at the specified index within 1058103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * the MatchInfoCollection. 1059103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param matches the collection of matches 1060103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param idx the index withing matches 1061103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param tzID receives the resolved time zone ID 1062103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return a reference to tzID. 1063103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 1064103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString& getTimeZoneID(const TimeZoneNames::MatchInfoCollection* matches, int32_t idx, UnicodeString& tzID) const; 10658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 10668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 10678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 10688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Parse a zone ID. 10698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param text the text contains a time zone ID string at the position. 10708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param pos the position 10718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param tzID receives the zone ID 10728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @return a reference to tzID 10738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 10748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UnicodeString& parseZoneID(const UnicodeString& text, ParsePosition& pos, UnicodeString& tzID) const; 10758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 10768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 10778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Parse a short zone ID. 10788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param text the text contains a short time zone ID string at the position. 10798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param pos the position 10808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param tzID receives the short zone ID 10818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @return a reference to tzID 10828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 10838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UnicodeString& parseShortZoneID(const UnicodeString& text, ParsePosition& pos, UnicodeString& tzID) const; 10848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 10858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 10868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Parse an exemplar location string. 10878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param text the text contains an exemplar location string at the position. 10888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param pos the position. 10898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param tzID receives the time zone ID 10908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @return a reference to tzID 10918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 10928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UnicodeString& parseExemplarLocation(const UnicodeString& text, ParsePosition& pos, UnicodeString& tzID) const; 1093103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius}; 1094103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 1095103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusU_NAMESPACE_END 1096103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 10978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#endif /* !UCONFIG_NO_FORMATTING */ 1098103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif 1099