Java/JDK 6/New Locales
Содержание
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);
}
}