2011-01-25 15 views
4

特定のパターンを使用して日付を表示するには、次のJSFコードがあります。ロケールに基づいて日時パターンを決定する

<f:convertDateTime pattern="E, d MMM, yyyy" timeZone="#{localeBean.timeZone}" /> 

このパターンにはlocaleBeanも渡したいと思います。 ロケールに基づいて特定のパターンを特定する方法はありますか?

答えて

1

DateFormat.getDateInstanceを試すことができます。例:

SimpleDateFormat f = (SimpleDateFormat)DateFormat.getDateInstance(DateFormat.SHORT, Locale.UK); 
    System.out.println(f.toPattern()); 

    f = (SimpleDateFormat)DateFormat.getDateInstance(DateFormat.SHORT, Locale.US); 
    System.out.println(f.toPattern()); 

プリント:

dd/MM/yy 
M/d/yy 
+0

は、どのように私はまた、AMまたはPMインジケータ付きの24時間形式で時刻を含めるためにこれを使用することができますか? M/d/yy HH:mm AM/PM? –

+0

パターンにパターンを追加するだけで済みます。 'pattern = f.toPattern()+" HH:mm a "' – dogbane

+0

大変です。ありがとうドッグベーン。そしてBalus Cにも感謝します。私は評判がどのように共有されているのかよく分かりません。誰かに2/3の印を付け、もう1つに1/3の印を付けることは可能ですか? –

6

f:convertDateTimeはviewrootのロケールに依存し、このためtypedateStyletimeStyle属性を提供します。 Faceletsのを想定し

<!DOCTYPE html> 
<html lang="#{localeBean.language}" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 
<f:view locale="#{localeBean.locale}"> 
    <h:head> 
     <title>SO question 4792373</title> 
    </h:head> 
    <h:body> 
     <h:outputText value="#{bean.date}"> 
      <f:convertDateTime type="date" dateStyle="short" /> 
     </h:outputText> 
     <br /> 
     <h:outputText value="#{bean.date}"> 
      <f:convertDateTime type="date" dateStyle="medium" /> 
     </h:outputText> 
     <br /> 
     <h:outputText value="#{bean.date}"> 
      <f:convertDateTime type="date" dateStyle="long" /> 
     </h:outputText> 
     <br /> 
     <h:outputText value="#{bean.date}"> 
      <f:convertDateTime type="date" dateStyle="full" /> 
     </h:outputText> 
    </h:body> 
</f:view> 
</html> 

は、ここでは、英語のロケールと同じようにレンダリングする方法は次のとおりです。

 
1/25/11 
Jan 25, 2011 
January 25, 2011 
Tuesday, January 25, 2011 

ドイツ語:

 
25.01.11 
25.01.2011 
25. Januar 2011 
Dienstag, 25. Januar 2011 

オランダ語:

 
25-1-11 
25-jan-2011 
25 januari 2011 
dinsdag 25 januari 2011 

フランス語:

 
25/01/11 
25 janv. 2011 
25 janvier 2011 
mardi 25 janvier 2011 

など。

関連する問題