Como formatar uma data no Visualforce?
-
22-09-2019 - |
Pergunta
No Salesforce, se estou vinculando uma data em uma página do Visualforce, como aplico formatação personalizada a ela?
Exemplo:
<apex:page standardController="Contact">
<apex:pageBlock title="Test">
<p>{!contact.Birthdate}</p>
</apex:pageBlock>
<apex:detail relatedList="false" />
</apex:page>
Isso produzirá uma data no formato padrão:
Qui, 01 de julho 09:10:23 GMT 2009
Como faço para obter (por exemplo) em formato dd/mm/aaaaa, assim:
01/07/2009
(Espero que essa seja uma pergunta bastante fácil, mas para fazer com que a comunidade do Salesforce continue aqui, acho que precisamos de algumas perguntas fáceis.)
Solução
<apex:outputText value="{0,date,MM'/'dd'/'yyyy}">
<apex:param value="{!contact.Birthdate}" />
</apex:outputText>
Link para o DOC completo: http://www.salesforce.com/us/developer/docs/pages/content/pages_compref_outputtext.htm
Outras dicas
A resposta parece depender do contexto. Eu tenho uma página VF que pré-popula a linha de assunto de uma tarefa com o valor de agora (). Para gravá -lo com as configurações de localidade do usuário, incluí métodos no controlador para formatar a data e os campos da data e hora, nesse sentido:
Datetime myDT = Datetime.now();
String myDate = myDT.format();
Mas agora, em outra página do VF, onde estou apenas exibindo um campo DateTime, confirmei que a formatação tratada do SFDC com base na configuração de localidade do usuário. Isso foi neste contexto, onde o CM.CampaignMembers é uma variável do controlador:
<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>