2017-07-19 55 views
-1

我定義的格式類似以下內容:的SimpleDateFormat - 轉換成其他語言環境

sdf = new SimpleDateFormat("MMMM dd\nEEEE, YYYY", Locale.getDefault()) 

現在,我得到了一些設備例外像這樣的:

java.lang.IllegalArgumentException: Unknown pattern character 'Y' 

所以,問題是,在Y不在本地設備中支持。所以我要的格式更改爲以下幾點:

// the string format is formatted in english, so we pass in Locale.ENGLISH 
new SimpleDateFormat("MMMM dd\nEEEE, YYYY", Locale.ENGLISH) 

問題

我怎麼現在可以使用這個SimpleDateFormat打印在地區語言的日期?我想EEEE是德文,英文,西班牙文或其他。所以我需要使用英文格式字符串,然後用本地語言打印格式化的字符串。我怎樣才能做到這一點?

SimpleDateFormat sdf = new SimpleDateFormat("MMMM dd\nEEEE, YYYY", Locale.getDefault()); 
Date d = new Date(); 
String formatted = sdf.format(d); 

預計

DE: Juli 2017\nMittwoch, 2017 
EN: July 2017\nWednesday, 2017 

想法

創建與當前本地像new SimpleDateFormat("MMMM dd\nEEEE, YYYY", Locale.getDefault());一個SimpleDateFormat,但現在我不能確定我傳遞到構造函數的字符串是有效的當前語言環境...(如異常顯示,Y無效在各個地區)

+1

你的輸入日期是怎樣的?要小心* Y *是週年* y *是年份 – Jens

+0

像'new Date()'或類似的...這是問題嗎? – prom85

+0

添加一個[mcve]到你的問題 – Jens

回答

2

修復字符串必須sibgle引號內:

new SimpleDateFormat("MMMM dd'\n'EEEE',' yyyy", Locale.ENGLISH) 

\n是換行符。希望你想在那裏。

UPDATE

(如異常顯示,Y是無效的在各個地區): Y是在各個地區有效!

+0

我想要那裏,是的。但是,如何以英文模式定義日期格式,但在任何語言環境中打印? – prom85

+1

模式不是區域設置相關的。只有輸出是語言環境依賴關係 – Jens

+0

因此,異常是由我缺少的引號引起的? – prom85

相關問題