Sincronização do fuso horário da aplicação JSF com o sistema operativo

O JavaServer Faces, por padrão, ao converter as datas, utiliza o fuso horário UTC (GMT-0) o que pode acarretar uma diferença nas datas recebidas dos formulários e guardadas na base de dados.
Uma maneira de resolver este problema é informar directamente no conversor o fuso horário com que se quer trabalhar. Como pode ser visto no exemplo a seguir.
<f:convertDateTime pattern=”dd/MM/yyyy” timeZone=”GMT+1”/>
Ou
<f:convertDateTime pattern=”dd/MM/yyyy” timeZone=”WAT”/>
WAT está para West Africa Time Zone que corresponde ao fuso horário de Angola.
O problema desta abordagem é que seria necessário informar o fuso horário em todos os conversores da aplicação.
A prática mais recomentada é configurara a aplicação de forma a que utilize o mesmo fuso horário do sistema operativo do servidor onde ela está hospedada. Este é o comportamento padrão da JVM.
Para habilitar esta sincronização é necessário adicionar o parâmetro de contexto no ficheiro web.xml da aplicação, como pode ser visto a seguir.

<context-param>
<param-name>
javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE
</param-name>
<param-value>true</param-value>
</context-param>
Esta configuração fará com que a aplicação funcione sincronizada com a JVM presente no servidor onde está hospedada e como a JVM trabalha sincronizada com o Sistema Operativo, a aplicação também funcionará sincronizada com o Sistema Operativo.

 

A seguir é mostrado um quadro com referências de alguns TimeZone

Hora padrão (GMT) Hora de Greenwich: Dublin, Edimburgo, Lisboa, Londres
Hora padrão da Europa Ocidental (GMT + 01:00) Amsterdã, Berlim, Bern, Roma, Estocolmo, Viena
Hora padrão do Pacífico (GMT-08:00) Hora do Pacífico (EUA e Canadá); Tijuana
Horário padrão do Meridiano (GMT-12:00) Linha de data internacional Oeste

* GMT (abreviatura de Greenwich Mean Time)

* UTC (abreviatura de Coordinated Universal Time)

Deixe um comentário