2015-04-21 40 views
1

我有一個班級正在編制從db format像2015/02/13到2015年2月13日的日期。不幸的是,這個功能適用於英文,法文,但不適用於中文。春天 - DateFormat沒有正確格式化中國的日期

這裏是我的了:

public class DateFormatTag extends TagSupport { 
    @Override 
    public int doStartTag() throws JspException { 
     out.println(dateFormat(getInput())); 
    } 

    public String dateFormat(String input) throws ParseException { 
     Locale locale = new Locale("cn", "zh"); 
     DateFormat df = new SimpleDateFormat("yyyy/MM/dd", locale); 
     Date date = df.parse(input); 
     SimpleDateFormat returnFormat = new SimpleDateFormat("dd MMMMM yyyy", locale); 
     return returnFormat.format(date); 
    } 

我爲了測試硬編碼的目的,中國的語言環境。輸入格式爲:2015/02/15(年/月/日)。

我找不到解決此問題的更好解決方案。任何建議將不勝感激。

該解決方案可能以Joda Time或Java嵌入式類提供。

+0

我覺得你應該使用http://www.joda.org/joda-time/ – facundofarias

+0

謝謝你的投入,我肯定會考慮它,但我們寧願留在嵌入式Java國際化。 – TheKolaNN

+0

在生產應用程序中,日期應由用戶根據選定的國家和語言顯示。該區域設置正在dateFormat方法的第一行中創建。 – TheKolaNN

回答

1

對於您的輸入格式,您不必使用語言環境構造SimpleDateFormat
對於輸出,你應該有閱讀the doc for Locale

DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); 
Date date = df.parse(input); 
SimpleDateFormat returnFormat 
    = new SimpleDateFormat("dd MMMMM yyyy", Locale.CHINA); 
// or Locale.CHINESE, Locale.PRC, all work on my machine 
return returnFormat.format(date);