有时候同一个网站会在不同的语言环境下运行,例如在中文环境下或者在英文环境下或者日文环境下等等,那么这时候我们变成就要使用国际化编程(internationlization)。
jdk给我们提供了几个基本类帮助我们进行国际化编程,Locale基本类和工具类NumberFormat(处理货币,数字,百分比等),DateFormat(处理时间);
Locale local = Locale.getDefault();
System.out.println(local.getCountry());
System.out.println(local.getDisplayCountry());
System.out.println(local.getLanguage());
System.out.println(local.getDisplayLanguage());
System.out.println(local.getDisplayName());
//输出结果
CN
中国
zh
中文
中文 (中国)
Locale类给我们封装了各个国家的一些基本数据,如使用的语言简写,国家的名称等等,要获得每个国家的具体对象,只需要调用Locale的静态对象即可
/*
* 想获取不同国家的100元货币表示法时就可以用NumberFormat传入本地对象然后获取
* 货币工具实例,再传入货币值就能打印当前locale类表示的国家的货币100元表示法了
*
*/
Locale local = Locale.getDefault();
double coin = 100;
//获取货币实例
NumberFormat curreny =
NumberFormat.getCurrencyInstance(local);
System.out.println(curreny.format(coin));
//中国
Locale local = Locale.CHINA;
DateFormat instance = DateFormat.getDateTimeInstance(DateFormat.LONG,
DateFormat.FULL, local);
System.out.println(instance.format(new Date()));
//像上面这样就能打印出符合中国人习惯的日期时间格式,如何想改成其他国家的日期格式只需要将Local.CHINA换成Local.XXX就行了
//解析字符串为date形式
Locale local = Locale.CHINA;
String str = "2017年10月24日 上午11时50分14秒 CST";
DateFormat instance = DateFormat.getDateTimeInstance(DateFormat.LONG,
DateFormat.FULL,
local);
Date date = instance.parse(str);
System.out.println(date);