javaweb 国际化:DateFormat,NumberFormat,MessageFormat,ResourceBundle的使用
Javaweb国际化
DateFormat:格式化日期的工具类,本身是一个抽象类;
NumberFormat:格式化数字到数字字符串,或货币字符串的字符类;
MessageFormat:可以格式化模式字符串,模式字符串:带占位符的字符串:"Date:{0},Salary:{1}",可以通过format方法会模式字符串进行格式化
ResourceBundle:资源包类,在类路径(src)下需要有对应的资源文件:baseName.properties.其中baseName是基名;
文件名为:test_zh_CN.properties,文件为:date=\u65E5\u671F,salary=\u5DE5\u8D44
文件名为:test_en_US.properties,文件为:date=date,salary=salary
importjava.text.DateFormat; importjava.text.MessageFormat; importjava.text.NumberFormat; importjava.text.ParseException; importjava.text.SimpleDateFormat; importjava.util.Date; importjava.util.Locale; importjava.util.ResourceBundle; importorg.junit.Test; publicclassI18nTest{ /** *ResourceBundle:资源包类. * *1.在类路径下需要有对应的资源文件:baseName.properties.其中baseName是基名. *2.可以使用基名_语言代码_国家代码.properties来添加不同国家或地区的资源文件.i18n_zh_CN.properties *3.要求所有基名相同的资源文件的key必须完全一致. *4.可以使用native2ascii命令来得到汉字对一个的asc码.Eclipse内置了工具 *5.可以调用ResourceBundle的getBundle(基名,Locale实例)获取获取ResourceBundle对象 *6.可以调用ResourceBundle的getString(key)来获取资源文件的value字符串的值. *7.结合DateFormat,NumberFormat,MessageFormat即可实现国际化. * */ @Test publicvoidtestResourceBundle(){ Localelocale=Locale.CHINA; ResourceBundleresourceBundle=ResourceBundle.getBundle("test",locale); System.out.println(resourceBundle.getString("date")); System.out.println(resourceBundle.getString("salary")); StringdateLabel=resourceBundle.getString("date"); StringsalLabel=resourceBundle.getString("salary"); Stringstr="{0}:{1},{2}:{3}"; Datedate=newDate(); doublesal=12345.12; DateFormatdateFormat=DateFormat.getDateInstance(DateFormat.MEDIUM,locale); StringdateStr=dateFormat.format(date); NumberFormatnumberFormat=NumberFormat.getCurrencyInstance(locale); StringsalStr=numberFormat.format(sal); Stringresult=MessageFormat.format(str,dateLabel,dateStr,salLabel,salStr); System.out.println(result); } /** *MessageFormat:可以格式化模式字符串 *模式字符串:带占位符的字符串:"Date:{0},Salary:{1}" *可以通过format方法会模式字符串进行格式化 */ @Test publicvoidtestMessageFormat(){ Stringstr="Date:{0},Salary:{1}"; Localelocale=Locale.CHINA; Datedate=newDate(); doublesal=12345.12; DateFormatdateFormat=DateFormat.getDateInstance(DateFormat.MEDIUM,locale); StringdateStr=dateFormat.format(date); NumberFormatnumberFormat=NumberFormat.getCurrencyInstance(locale); StringsalStr=numberFormat.format(sal); Stringresult=MessageFormat.format(str,dateStr,salStr); System.out.println(result); } /** *NumberFormat:格式化数字到数字字符串,或货币字符串的工具类 *1.通过工厂方法获取NumberFormat对象 *NumberFormat.getNumberInstance(locale);//仅格式化为数字的字符串 *NumberFormat.getCurrencyInstance(locale);//格式为货币的字符串 * *2.通过format方法来进行格式化 *3.通过parse方法把一个字符串解析为一个Number类型. */ @Test publicvoidtestNumberFormat()throwsParseException{ doubled=123456789.123d; Localelocale=Locale.FRANCE; // NumberFormatnumberFormat=NumberFormat.getNumberInstance(locale); Stringstr=numberFormat.format(d); System.out.println(str); NumberFormatnumberFormat2=NumberFormat.getCurrencyInstance(locale); str=numberFormat2.format(d); System.out.println(str); str="123456789,123"; d=(Double)numberFormat.parse(str); System.out.println(d); str="123456789,12"; d=(Double)numberFormat2.parse(str); System.out.println(d); } /* *7.若有一个字符串,如何解析为一个Date对象呢? *I.先创建DateFormat对象:创建DateFormat的子类SimpleDateFormat对象 *SimpleDateFormat(Stringpattern). *其中pattern为日期,时间的格式,例如:yyyy-MM-ddhh:mm:ss *II.调用DateFormat的parse方法来解析字符串到Date对象. */ @Test publicvoidtestDateFormat2()throwsParseException{ Stringstr="1990-12-1212:12:12"; DateFormatdateFormat=newSimpleDateFormat("yyyy-MM-ddhh:mm:ss"); Datedate=dateFormat.parse(str); System.out.println(date); } /** *DateFormat:格式化日期的工具类. *DateFormate本身是一个抽象类. * *1.若只希望通过DateFormat把一个Date对象转为一个字符串,则可以通过DateFormat的工厂方法来获取DateFormat对象 *2.可以获取只格式化Date的DateFormat对象:getDateInstance(intstyle,LocaleaLocale) *3.可以获取只格式化Time的DateFormat对象:getTimeInstance(intstyle,LocaleaLocale) *4.可以获取既格式化Date,也格式化Time的DateFormat对象: *getDateTimeInstance(intdateStyle,inttimeStyle,LocaleaLocale) *5.其中style可以取值为:DateFormat的常量:SHORT,MEDIUM,LONG,FULL.Locale则为代表国家地区的Locale对象 *6.通过DateFormat的format方法来格式化个Date对象到字符串. */ @Test publicvoidtestDateFormat(){ Localelocale=Locale.US; Datedate=newDate(); System.out.println(date); //获取DateFormat对象 DateFormatdateFormat= DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.MEDIUM,locale); Stringstr=dateFormat.format(date); System.out.println(str); } /** *Locale:Java中表示国家或地区的类.JDK中提供了很多常量. *也可以通过Locale(languageCode,countryCode)的方式来创建 *在WEB应用中可以通过request.getLocale()方法来获取. */ @Test publicvoidtestLocale(){ Localelocale=Locale.CHINA; System.out.println(locale.getDisplayCountry()); System.out.println(locale.getLanguage()); locale=newLocale("en","US"); System.out.println(locale.getDisplayCountry()); System.out.println(locale.getLanguage()); } }
以上就是对Javaweb国际化的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!