Olá a todos,
Estou utilizando o converter de data do JSF e para funcionar adequadamente,
tive de setar o atributo do converter
<f:convertDateTime pattern="MM/yyyy" timezone="GMT-3"/>
Para não fazer isto na aplicação toda, resolvi iniciar a JVM com este parâmetro:
-Duser.timezone
Porém, agora quando faço
new Date()
ele retorna
Tue Sep 01 18:01:09 GMT 2009
quando ainda são 15h no Brasil, o que não está errado, porém o retorno
do converter para 01/01/2009 é 01/01/2009, quando teoricamente deveria ser 01/01/2009 03h00.
E agora, o que faço? Não queria fazer gambiarra pra resolver.... Alguma idéia?
Resolvi!
Para referência futura:
Ao invés de fazer isto:
<f:convertDateTime pattern="MM/yyyy" timeZone="GMT-3"/>
o que se um dia eu resolvesse trocar o timezone teria de trocar em todo o projeto, eu fiz o seguinte:
pagina.xhtml
<f:convertDateTime pattern="MM/yyyy" timeZone="#{initParam.timezone}"/>
web.xml
<context-param>
<param-name>timezone</param-name>
<param-value>GMT-3</param-value>
</context-param>
Para quem tem o mesmo problema, se vc tentar resolver fazendo
-Duser.timezone='GMT-3'
você vai ter o problema de quando criar um new Date() a hora vai estar 3 horas adiantados.
É isso ai…
Olá pessoal sei que o post já está como resolvido, mas segue uma dica.
em web.xml adicione esses parâmetros
<context-param>
<param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
<param-value>true</param-value>
</context-param>
Nesse caso ele vai usar o timezone default da máquina. Claro isso ainda tem implicações com o banco de dados caso ele esteja em outro servidor com timezone diferente e assim vai.
Flow.
2 curtidas
Gustavo,
Para quem usa a implementação do MyFaces, essa solução só está disponível a partir da versão 2:
https://issues.apache.org/jira/browse/MYFACES-2032