我經常用類似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. Python 3字符串排序依賴於語言環境嗎?
- 2. 依賴於環境變量
- 3. 如何比較依賴語言環境的浮點數?
- 4. 性別依賴的語言環境字符串資源Android
- 5. 的SimpleDateFormat - 轉換成其他語言環境
- 6. GUI依賴於語言和平臺?
- 7. Symfony2語言環境
- 8. 基於語言環境的Rails路線
- 9. python curses.ascii取決於語言環境?
- 10. Facebook Javascript SDK語言環境語言
- 11. Android:默認語言環境語言「hd」
- 12. 語言環境語言縮減器
- 13. Chart.js時刻語言環境
- 14. number_to_currency語言環境轉換
- 15. 與特定語言環境
- 16. Facebook JSON語言環境
- 17. GWT DatePicker語言環境
- 18. DateTime語言環境設置
- 19. 更改BlackBerry語言環境
- 20. JSF語言環境例外
- 21. GWT語言環境變化
- 22. 是Locale.ENGLISH或Locale.US更適合於構建獨立於語言環境的SimpleDateFormat用於字符串解析
- 23. 「Kotlin」編程中的語言更改語言環境由於語言環境適用於Java Fine,但Kotlin語言不起作用
- 24. 多語言環境中不同語言環境的設計對話框
- 25. Spring MVC默認語言環境和語言環境更改不起作用
- 26. 如何獲得沒有語言環境類的Django的語言環境日期?
- 27. toupper/tolower +語言環境(德語)
- 28. 語境依賴Inhections在Java EE中
- 29. Grails i18n不適用於語言環境「he」(希伯來語)
- 30. 獲取可用於文本到語音的語言環境(TTS)
我問不包含任何一個月的圖案或例如'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