2 *******************************************************************************
3 * Copyright (C) 2008-2012, International Business Machines Corporation and *
4 * others. All Rights Reserved. *
5 *******************************************************************************
7 package com.ibm.icu.impl.javaspi.text;
9 import java.text.DateFormat;
10 import java.text.spi.DateFormatProvider;
11 import java.util.Locale;
13 import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
14 import com.ibm.icu.impl.jdkadapter.SimpleDateFormatICU;
15 import com.ibm.icu.util.ULocale;
17 public class DateFormatProviderICU extends DateFormatProvider {
19 private static final int NONE = -1;
22 public DateFormat getDateInstance(int style, Locale locale) {
23 return getInstance(style, NONE, locale);
27 public DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale locale) {
28 return getInstance(dateStyle, timeStyle, locale);
32 public DateFormat getTimeInstance(int style, Locale locale) {
33 return getInstance(NONE, style, locale);
37 public Locale[] getAvailableLocales() {
38 return ICULocaleServiceProvider.getAvailableLocales();
41 private DateFormat getInstance(int dstyle, int tstyle, Locale locale) {
42 com.ibm.icu.text.DateFormat icuDfmt;
43 ULocale actual = ICULocaleServiceProvider.toULocaleNoSpecialVariant(locale);
45 icuDfmt = com.ibm.icu.text.DateFormat.getTimeInstance(tstyle, actual);
46 } else if (tstyle == NONE) {
47 icuDfmt = com.ibm.icu.text.DateFormat.getDateInstance(dstyle, actual);
49 icuDfmt = com.ibm.icu.text.DateFormat.getDateTimeInstance(dstyle, tstyle, actual);
51 if (!(icuDfmt instanceof com.ibm.icu.text.SimpleDateFormat)) {
52 // icuDfmt must be always SimpleDateFormat
56 return SimpleDateFormatICU.wrap((com.ibm.icu.text.SimpleDateFormat)icuDfmt);