首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 時間處理系列 (6):Locale 區域化詳解

     編輯:Java 相關知識

Locale 核心概念

java.util.Locale 代表特定地理、政治、文化區域。日期/時間格式化、數字貨幣格式、消息國際化均依賴 Locale。

三種創建方式

1. 默認區域

Locale locale = Locale.getDefault(); // JVM 從 OS 獲取,可用 -Duser.language -Duser.country 指定

2. 內置常量

Locale.CHINA          // zh_CN
Locale.SIMPLIFIED_CHINESE // zh_CN (別名)
Locale.TRADITIONAL_CHINESE // zh_TW
Locale.US             // en_US
Locale.UK             // en_GB
Locale.JAPAN          // ja_JP
Locale.KOREA          // ko_KR
// 共 20+ 常量

3. 構造函數

new Locale("zh", "CN")           // 語言 + 國家
new Locale("zh", "CN", "variant") // 語言 + 國家 + 變體 (極少用)

查看所有支持區域

Locale[] locales = Locale.getAvailableLocales();
// 輸出: ja_JP, es_PE, en, ja_JP_JP, es_PA, sr_BA, ..., zh_CN, zh_TW, zh_HK, ...

格式:language_COUNTRY (如 zh_CN) 或僅 language (如 en)。

關鍵 API

方法說明
getLanguage()ISO-639 語言代碼 (如 "zh")
getCountry()ISO-3166 國家代碼 (如 "CN")
getDisplayName(Locale)本地化顯示名 (如 "中文 (中國)")
getISO3Language()三字母語言代碼 (如 "zho")
getISO3Country()三字母國家代碼 (如 "CHN")

實戰:不同 Locale 格式化同一日期

Date date = new Date(113, 8, 19, 14, 22, 30);
Locale cn = Locale.SIMPLIFIED_CHINESE;
Locale us = new Locale("en", "US");

String cnStr = DateFormat.getDateInstance(DateFormat.MEDIUM, cn).format(date);
String usStr = DateFormat.getDateInstance(DateFormat.MEDIUM, us).format(date);

System.out.println("cn = " + cnStr); // 2013-9-19
System.out.println("us = " + usStr); // Sep 19, 2013

最佳實踐

  1. 用戶可見文本必須通過 Locale 格式化,禁止硬編碼格式
  2. 服務端存儲統一用 UTC + ISO-8601,僅展示層按用戶 Locale 格式化
  3. Web 應用從 Accept-Language 頭或用戶偏好解析 Locale
  4. 資源包 (ResourceBundle) 命名遵循 baseName_language_COUNTRY.properties 約定
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved