我經常用類似HH:mm:ss
或yyyy-MM-dd
的模式創建SimpleDateFormat以獨立於語言環境的方式輸出日期。由於還有一個構造函數需要一個額外的語言環境參數,我想知道是否有這種格式可以取決於語言環境的情況,或者我應該總是指定Locale.ENGLISH或Locale.GERMANY。讓我們假設時區是明確設置的。語言環境依賴於SimpleDateFormat?
回答
就發現語言環境的getAvailableLocales
靜態方法,它原來是一個日曆的所有字段可以是依賴於語言環境:
public static void main(String[] args) {
String pattern = "yyyy-MM-dd HH:mm:ss";
Date date = new Date();
String defaultFmt = new SimpleDateFormat(pattern).format(date);
for (Locale locale : Locale.getAvailableLocales()) {
String localeFmt = new SimpleDateFormat(pattern, locale).format(date);
if (!localeFmt.equals(defaultFmt)) {
System.out.println(locale + " " + localeFmt);
}
}
}
在我的系統(在德國運行Ubuntu的英文版本)這個輸出下面的列表,讓希望的Unicode字符通過完整過來:
ja_JP_JP 23-03-03 16:53:09
hi_IN २०११-०३-०३ १६:५३:०९
th_TH 2554-03-03 16:53:09
th_TH_TH ๒๕๕๔-๐๓-๐๓ ๑๖:๕๓:๐๙
所以Japan和Thailand使用不同的時代,但AR否則基於gregorian calendar,這解釋了爲什麼月和日是相同的。
其他語言環境還使用不同的腳本編寫數字,例如在印度使用Hindi,在泰國使用泰語的變體。
要回答這個問題,當需要區域獨立字符串時,區域設置應始終指定爲已知值。
編輯: Java 1.6添加了常數Locale.ROOT來指定語言/國家/地區中性語言環境。這將優先於爲計算機指定輸出的英文語言環境。
根區域設置是其語言,國家和變體爲空(「」)字符串的區域設置。這被認爲是所有語言環境的基本語言環境,並被用作區域敏感操作的語言/國家中性語言環境。
是的,SimpleDateFormat
絕對是區域設置敏感的。某些字段(如小時和分鐘)與語言環境無關。
SimpleDateFormat
還支持本地化日期和時間模式字符串。在這些字符串中,上面描述的模式字母可能會替換爲其他與語言環境相關的模式字母。SimpleDateFormat
不處理除模式字母以外的文本的本地化;這取決於班級的客戶。
或者,你可以使用本地化友好DateFormat#getDateInstance()
工廠方法來代替,因爲:
public SimpleDateFormat(String pattern, Locale locale)
使用給定語言環境的給定模式和默認的日期格式符號構造
SimpleDateFormat
。注意:此構造函數可能不支持所有語言環境。要獲得全面覆蓋,請使用DateFormat
類中的工廠方法。
這對我的作品,也許你應該嘗試一下:
String time = new SimpleDateFormat("HH:mm:ss").format(new Date());
控制檯輸出:
11:52:45
- 1. SimpleDateFormat和阿拉伯語語言環境
- 2. SimpleDateFormat和Java中的語言環境API
- 3. Python 3字符串排序依賴於語言環境嗎?
- 4. 依賴於環境變量
- 5. 如何比較依賴語言環境的浮點數?
- 6. 性別依賴的語言環境字符串資源Android
- 7. 我正在面對ParseException法語與SImpleDateFormat語言環境
- 8. 依賴於語言環境的正則表達式(點或昏迷小數)
- 9. Log4j,禁用依賴於環境的appenders
- 10. Java依賴於環境的編譯
- 11. 依賴於環境的設置
- 12. 的SimpleDateFormat - 轉換成其他語言環境
- 13. GUI依賴於語言和平臺?
- 14. NSDateFormatter語言環境
- 15. Symfony2語言環境
- 16. swprintf語言環境
- 17. java語言環境標記語言環境顯示名稱
- 18. Laravel使用語言環境的語言環境代碼
- 19. 語言依賴DAO(i18n)
- 20. python curses.ascii取決於語言環境?
- 21. 基於語言環境的Rails路線
- 22. Facebook Javascript SDK語言環境語言
- 23. Android - 更改語言環境(語言)
- 24. 系統語言環境語言設置
- 25. Android:默認語言環境語言「hd」
- 26. 語言環境語言縮減器
- 27. Android語言環境語言支持
- 28. 動態日期格式取決於語言和語言環境
- 29. Linux:在運行時設置語言環境和進程間依賴關係
- 30. Facebook JSON語言環境
我問不包含任何一個月的圖案或例如'yyyy-MM-dd',我想要一個語言環境獨立輸出,可能通過省略locale參數來保存一些鍵擊。 – 2011-03-02 23:21:05
@Jörn:啊!在這個具體的例子中,你應該沒有問題省略額外的參數。不過,時區格式化可能是一個不同的故事。不過,讓Java擔心特定於語言環境的格式(例如,決定何時使用「mm/dd/yyyy」與「dd/mm/yyyy」)可能會更好。 – 2011-03-02 23:23:03
我已經習慣了總是指定一個語言環境(至少在應用程序不是總是使用系統區域設置的客戶端應用程序時),以確保我(或其他人)不會忘記指定一個模式必須改變。有點像總是在塊周圍使用大括號的規則,即使它只有一行。 – 2011-03-02 23:32:22