Além da sugestão de resolução que dei no post supracitado, encontrei duas outras formas. Veja quais são:
1) Utilizar <apex:OutputField />
Veja que quando se utiliza o <apex:OutputField /> diferente do <apex:OutputText /> a hora já vem formatada no GMT padrão.
Controller:
public class TesteController {
public MeuObjeto__c obj { get; set; }
public TesteController() {
this.obj = new MeuObjeto__c();
this.obj.DataHoraOcorrido__c = DateTime.Now();
}
}
Visualforce:
<apex:page controller="TesteController" >
<apex:outputText value="{!Obj.DataHoraOcorrido__c}" />
<br/><br/>
<apex:outputField value="{!Obj.DataHoraOcorrido__c}" />
</apex:page>
Resultado:
2) Utilizar o fuso horário através do Apex
Dessa forma, crio uma propriedade no Apex que retorna um cálculo em cima do Timezone (fuso horário) do Usuário, que deve ser adicionado à Data/Hora.
Controller:
public class TesteController {
public MeuObjeto__c obj { get; set; }
public TesteController() {
this.obj = new MeuObjeto__c();
this.obj.DataHoraOcorrido__c = DateTime.Now();
}
public Double Timezone {
get {
return UserInfo.getTimeZone().getOffset(DateTime.now()) / (1000 * 3600 * 24.0);
}
}
}
Visualforce:
<apex:page controller="TesteController" >
Não formatado: <br/>
<apex:outputText value="{!Obj.DataHoraOcorrido__c + timezone}" />
<br/><br/>
Formatado: <br/>
<apex:outputText value="{0,date,dd/MM/yyyy HH:mm:ss}">
<apex:param value="{!Obj.DataHoraOcorrido__c + timezone}"/>
</apex:outputText>
</apex:page>
Resultado:
Por hoje é só! Até a próxima...
* Está precisando de um suporte ou uma consultoria formatações de Data e Hora nas Visualforce dentro da sua plataforma Salesforce? Entre em contato conosco - CbCloud: http://www.cbcloud.com.br/ Somos parceiros Salesforce






