Java/JDK 6/New Locales

Материал из Java эксперт
Перейти к: навигация, поиск

Displaying Calendar Names

 
import java.util.Calendar;
import java.util.Locale;
import java.util.Map;
public class DisplayNames {
  public static void main(String args[]) {
    Calendar now = Calendar.getInstance();
   // Locale locale = Locale.getDefault();
     Locale locale = Locale.ITALIAN;
    Map<String, Integer> names = now.getDisplayNames(Calendar.DAY_OF_WEEK, Calendar.LONG, locale);
    System.out.println(names);
    String name = now.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, locale);
    System.out.printf("Today is a %s.%n", name);
  }
}





Japanese Imperial Calendar

 

import java.util.Calendar;
import java.util.Locale;
import java.util.Map;
public class JapaneseCalendar {
  public static void main(String args[]) {
    Locale locale = new Locale("ja", "JP", "JP");
    Calendar now = Calendar.getInstance(locale);
    Map<String, Integer> names = now.getDisplayNames(Calendar.ERA, Calendar.LONG, locale);
    System.out.printf("%s%n", names);
    System.out.printf("It is year %tY of the current era%n", now);
    System.out.printf("The calendar class is: %s%n", now.getClass().getName());
  }
}





Locale Sensitive Services SPI

 
java.text.BreakIterator
java.text.Collator
java.text.DateFormat
java.text.NumberFormat
java.text.DateFormatSymbols
java.text.DecimalFormatSymbol

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.spi.DateFormatProvider;
import java.util.Locale;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class AntarcticaLocaleDemo {
    public static void main(String [] args) {
        Date now = new Date();
        DateFormat defaultFormat = DateFormat.getDateTimeInstance();
        String defaultString = defaultFormat.format (now);
        System.out.println ("Default : " + defaultString);
        DateFormat antarcticaFormat =
                DateFormat.getDateTimeInstance (
                DateFormat.FULL, DateFormat.FULL,
                new Locale ("en", "AQ"));
        String antarcticaString = antarcticaFormat.format (now);
        System.out.println ("Antarctica: " + antarcticaString);
    }
}
class DateFormatProviderImpl extends DateFormatProvider {
    private Locale antarctica = new Locale ("en", "AQ");
    public Locale[] getAvailableLocales() {
        return new Locale [] {antarctica};
    }
    public DateFormat getTimeInstance(int style, Locale locale) {
        if (locale.equals(antarctica)) {
            return new SimpleDateFormat("HH.mm.ss");
        }
        return null;
    }
    public DateFormat getDateTimeInstance(int dateStyle, Locale locale) {
        if (locale.equals(antarctica)) {
            return new SimpleDateFormat("yyyy~MM~dd HH.mm.ss");
        }
        return null;
    }
    public DateFormat getDateTimeInstance(int dateStyle,
           int timeStyle, Locale locale) {
        if (locale.equals(antarctica)) {
            return new SimpleDateFormat("yyyy~MM~dd HH.mm.ss");
        }
        return null;
    }
    @Override
    public DateFormat getDateInstance(int style, Locale locale) {
      if (locale.equals(antarctica)) {
        return new SimpleDateFormat("yyyy~MM~dd HH.mm.ss");
      }
      return null;
    }
}
//Reference:
//Java 6 New Features: A Tutorial
//by Budi Kurniawan 
//Brainy Software Corp. 2006
//Chapter 4 - Networking
//# ISBN-10: 0975212885
//# ISBN-13: 978-0975212882





New locales in Java 6

 
/*
Language                  Country         Locale Identifier
Chinese (Simplified)      Singapore       zh_SG
English                   Malta           en_MT
English                   Philippines     en_PH
English                   Singapore       en_SG
Greek                     Cyprus          el_CY
Indonesian                Indonesia       in_ID
Japanese (Japanese calendar)  Japan       ja_JP_JP
Malay                     Malaysia        ms_MY
Maltese                   Malta           mt_MT
Spanish                   US              es_US
*/
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Locale;
import javax.swing.JOptionPane;
public class JapaneseCalendar {
  public static void main(String[] args) {
    Locale japanese = new Locale("ja", "JP", "JP");
    Calendar cal = Calendar.getInstance(japanese);
    DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, japanese);
    String str = df.format(cal.getTime());
    JOptionPane.showMessageDialog(null, str);
  }
}