web-dev-qa-db-ja.com

VisualForceで日付をフォーマットする方法は?

Salesforceで日付をVisualForceページにバインドしている場合、カスタム書式をどのように適用しますか?

例:

<apex:page standardController="Contact">
  <apex:pageBlock title="Test">
      <p>{!contact.Birthdate}</p>
  </apex:pageBlock>                   
  <apex:detail relatedList="false" />
</apex:page> 

これにより、デフォルトの形式で日付が出力されます。

2009年7月1日09:10:23 GMT 2009

次のようにdd/mm/yyyy形式に(たとえば)取得するにはどうすればよいですか:

2009年1月7日

(うまくいけば、これはかなり簡単な質問ですが、ここでSalesforceコミュニティを進めるには、いくつか簡単な質問が必要だと思います。)

27
codeulike
<apex:outputText value="{0,date,MM'/'dd'/'yyyy}">
    <apex:param value="{!contact.Birthdate}" /> 
</apex:outputText>

完全なドキュメントへのリンク: http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_outputText.htm

51
Ryan Guest

答えはコンテキストに依存するようです。 NOW()の値をタスクの件名行に事前入力する1つのVFページがあります。ユーザーのロケール設定でそれを記録するために、これらの行に沿って日付と日付時刻フィールドをフォーマットするメソッドをコントローラーに含めました。

  Datetime myDT = Datetime.now(); 
  String myDate = myDT.format();

しかし、たった今日時フィールドを表示するだけの別のVFページで、SFDCがユーザーのロケール設定に基づいてフォーマットを処理することを確認しました。これは、cm.CampaignMembersがコントローラーからの変数であるこのコンテキストで行われました。

    <apex:column>
      <apex:pageBlockTable value="{!cm.CampaignMembers}" var="cmp" >
        <apex:column headerValue="" value="{!cmp.Campaign.Name}" />
        <apex:column headerValue="" value="{!cmp.Status}"  />
        <apex:column headerValue="" value="{!cmp.FirstRespondedDate}" />
        <apex:column headervalue="" value="{!cmp.CreatedDate}"  />
      </apex:pageBlockTable>
    </apex:column>
3
Scott_in_London