Locale a = new Locale("zh");Locale b = new Locale("zh","CN");Locale c = new Locale("zh","CN","B");為了方便起見, java SE預定義了大量的locale對象,Locale.CHINA,Locale.CANADA等。Java SE還預定義了大量的語言locale,它們只設定了語言而沒有位置:Locale.CHINESE,Locale.ENGLISH等。
除了構建一個locale或使用預定義的locale外,還可以有兩種方法來獲得一個locale對象。Locale類的靜態getdefault方法可以獲得作為本地操作系統的一部分而存放的默認locale。可以調用setDefault來改變默認的Java locale;但是,這種改變只對你的程序有效,不會對操作系統產生影響。最后,對于所有依賴locale的類,可以返回一個它們所支持的locale數組。
Locale[] a = DateFormat.getAvailableLocales() 一旦有了一個locale,你能用它做什么呢?答案是它所能做的事情很有限。 Locale類中惟一有用的是那些定義語言和國家代碼的方法,其中最重要的一個是getdisplayName,它返回一個描述locale的字符串。這個字符串并不包含前面所說的由兩個字母組成的代碼,而是以一種面向用戶的形式來表現。Locale a = new Locale("zh","CN"); System.out.PRintln(a.getDisplayName());輸出 中文(中國) System.out.println(a.getDisplayName(Locale.JAPANESE));中國語 (中華人民共和國) System.out.println(a.getDisplayName(Locale.ENGLISH));Chinese (China)LocaleLocale(String language)Locale(String language, String country)Locale(String language, String country, String variant)用給定的語言、國家和變量創建一個locale。static Locale getDefault()返回默認的locale。static void setDefault(Locale loc)設定默認的locale。String getDisplayName()返回一個在當前的locale中所表示的用來描述locale的名字。String getDisplayName(Locale loc)返回一個在給定的locale中所表示的用來描述locale的名字。String getLanguage()返回語言代碼,它是兩個小寫字母組成的ISO-639代碼。String getDisplayLanguage()返回在當前locale中所表示的語言名稱。String getDisplayLanguage(Locale loc)返回在給定locale中所表示的語言名稱。String getCountry()返回國家代碼,它是由兩個大寫字母組成的ISO-3166代碼。String getDisplayCountry()返回在當前locale中所表示的國家名。String getDisplayCountry(Locale loc)返回在當前locale中所表示的國家名。String getVariant()返回locale中變量的字符串。String getDisplayVariant()返回在當前locale中所表示的變量名稱。String getDisplayVariant(Locale loc)返回在給定locale中所表示的變量名稱。String toString()返回locale的描述,包括語言、國家和變量,用下劃線分隔(比如, “ de_CH”)。數字格式Java類庫提供了一個格式器(formatter)對象的集合,可以對java.text包中的數字值進行格式化和解析。1.得到locale對象。2.使用一個“工廠方法”得到一個格式器對象。3.使用這個格式器對象來完成格式化和解析工作。
工廠方法是NumberFormat類的一個靜態方法,它接受一個Locale類型的參數。總共有3個工廠方法: getNumberInstance、 getCurrencyInstance和getPercentInstance,這些方法返回的對象可以分別對數字、貨幣量和百分比進行格式化和解析。
Locale a = new Locale("de","DE"); NumberFormat nf = NumberFormat.getCurrencyInstance(a); double b = 1234.57687; String string = nf.format(b); System.out.println(string);輸出1.234,58 € 相反地,如果要想讀取一個按照某個locale的規定而輸入或存儲的數字,那么就需要使用parse方法。比如,下面的代碼解析了用戶輸入到文本框中的值。 parse方法能夠處理小數點和分隔符以及其他語言中的數字。parse的返回類型是抽象類型的Number。返回的對象是一個Double或Long的包裝器類,這取決于被解析的數字是否是浮點數。如果兩者都可以接 受,可以使用Number類中的doubleValue方法來讀取被包裝的數字。Number類型的對象并不能自動轉換成相關的基本類型,因此,不能直接將一個Number對象賦給一個基本類型,而應該使用doubleValue或intValue方法。 如果數字文本的格式不正確,該方法會拋出一個ParseException異常。例如,字符串以空格開頭是不允許的(可以調用trim方法來去掉空格)。但是,任何跟在數字之后的字符都將被忽略,所以這些跟在后面的字符是不會引起異常的。可以用靜態的getAvailableLocales方法得到一個當前所支持的locale對象列表。這個方法返回一個locale對象數組,從中可以獲得針對它們的數字格式器對象。可以用DecimalFormat df = new DecimalFormat("#.00");來處理數字。表示小數點后兩位,不足補0。但是0.12format后變為.12;
NumberFormatstatic Locale[] getAvailableLocales()返回一個Locale對象的數組,其成員包含有NumberFormat 格式器。static NumberFormat getNumberInstance()static NumberFormat getNumberInstance(Locale l)static NumberFormat getCurrencyInstance()static NumberFormat getCurrencyInstance(Locale l)static NumberFormat getPercentInstance()static NumberFormat getPercentInstance(Locale l)當當前的或給定的locale提供處理數字、貨幣值或百分比的格式器。String format(double x)String format(long x)對給定的浮點數或整數進行格式化并以字符串的形式返回結果。Number parse(String s)解析給定的字符串并返回數字值,如果輸入字符串描述了一個浮點數,返回類型就是Double,否則返回類型就是Long。字符串必須以一個數字開頭;以空格開頭是不允許的。數字之后可以跟隨其他字符,但它們都將被忽略。解析失敗時拋出ParseException異常。void setParseIntegerOnly(boolean b)boolean isParseIntegerOnly()設置或獲取一個標識,該標識指示這個格式器是否應該只解析整數值。void setGroupingUsed(boolean b)boolean isGroupingUsed()設置或獲取一個標識,該標識指示這個格式器是否會添加十進制分隔符(比如100 000)。void setMinimumIntegerDigits(int n)int getMinimumIntegerDigits()void setMaximumIntegerDigits(int n)int getMaximumIntegerDigits()void setMinimumFractionDigits(int n)int getMinimumFractionDigits()void setMaximumFractionDigits(int n)int getMaximumFractionDigits()設置或獲取整數或小數部分所允許的最大或最小位數。 為了格式化貨幣值,可以使用NumberFormat.getCurrencyInstance方法。但是,這個方法的靈活性不好,它返回一個只針對一種貨幣的格式器。使用Currency類來控制被格式器所處理的貨幣。可以通過將一個貨幣標識符傳給靜態的Currency.getInstance方法來得到一個Currency對象,然后對每一個格式器都調用setCurrency方法。Locale a = new Locale("de","DE"); NumberFormat nf = NumberFormat.getCurrencyInstance(a); nf.setCurrency(Currency.getInstance("zh"));Curreneystatic Currency getInstance(String currencyCode)static Currency getInstance(Locale locale)返回與給定的ISO 4217貨幣代號匹配的Currency實例或返回與給定locale對應的國家。String toString()String getCurrencyCode()獲取貨幣的ISO 4217代碼。String getSymbol()String getSymbol(Locale locale)根據默認或給定的locale得到貨幣的格式化符號。比如美元的格式化符號可能是“ $”或“ US$”,具體是哪種形式依賴于locale。int getDefaultFractionDigits()獲取貨幣值小數點后的默認位數。時間和日期當格式化日期和時間時,需要考慮4個與locale相關的問題:月份和星期應該用本地語言來表示。年月日的順序要符合本地習慣。公歷可能不是本地首選的日期表示方法。必須要考慮本地的時區。 Java的DateFormat類可以處理這些問題。它和NumberFormat類很相似,用起來很容易。首先,得到一個locale,可以使用默認的locale或調用靜態的getAvailableLocales方法來得到一個支持日期格式化的locale數組。
DateFormat df = DateFormat.getDateInstance(style, Locale); DateFormat.getTimeInstance(style, aLocale) DateFormat.getDateTimeInstance(dateStyle, timeStyle, aLocale)為了設定想要的風格,這些工廠方法有一個參數,它可以是以下某個值:DateFormat.DEFAULTDateFormat.FULL (例如,按照美國locale,日期格式為 Wednesday, September 12, 2007 8:51:03 PM PDT)DateFormat.LONG (例如,按照美國locale,日期格式為September 12, 2007 8:51:03 PM PDT)DateFormat.MEDIUM (例如,按照美國locale,日期格式為Sep 12, 2007 8:51:03 PM)DateFormat.SHORT (例如,按照美國locale,日期格式為9/12/07 8:51 PM可以使用SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");來處理日期。DateFormatstatic Locale[] getAvailableLocales()返回一個Locale對象的數組,可以對這些對象使用DateFormat格式器。static DateFormat getDateInstance(int dateStyle)static DateFormat getDateInstance(int dateStyle, Locale l)static DateFormat getTimeInstance(int timeStyle)static DateFormat getTimeInstance(int timeStyle, Locale l)static DateFormat getDateTimeInstance(int dateStyle, int timeStyle)static DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale l)為默認或指定的locale返回一個日期格式器、時間格式器或日期和時間的格式器。參數: dateStyle, timeStyle DEFAULT、 FULL、 LONG、 MEDIUM、 SHORT之一String format(Date d)對給定的日期/時間進行格式化,并返回結果。Date parse(String s)解析給定的字符串,返回其中描述的日期/時間。字符串必須以日期或時間開頭;以空格開頭是不允許的。日期后可以跟其他字符,但它們會被忽略。如果解析沒有成功,則拋出ParseException異常。void setLenient(boolean b)boolean isLenient()設置或獲得一個標志,它標記解析時是采用寬松的還是嚴格的方式。在寬松模式下,像February 30, 1999這樣的日期會被自動轉換成March 2, 1999。它是默認的模式。void setCalendar(Calendar cal)Calendar getCalendar()設置或獲得Calendar對象,可以用它來從Date對象中獲取年、月、日、小時、分鐘和秒。如果不想使用該locale的默認日歷(一般是公歷),就使用這個方法。void setTimeZone(TimeZone tz)TimeZone getTimeZone()設置或獲得格式化時間的時區對象。如果不想讓locale使用默認時區,可以使用這個方法。默認時區是默認locale的時區,可以從操作系統中得到它。對于其他locale,應該使用和地理位置相對應的時區。void setNumberFormat(NumberFormat f)NumberFormat getNumberFormat()設置或獲得數字格式,用它來格式化那些表示年、月、日、小時、分、秒的時間。
新聞熱點
疑難解答