Fala Pedrão =D

Entao.. esse "comportamento" já é conhecido há muito tempo, e realmente é
uma pedra no sapato, nao só dos brasileiros mas de todos os paises possuem
"horário de verão" (daylight)  =(


Já temos algumas threads sobre isso aqui na lista (de uma olhada no
histórico).

Vou listar alguns problemas e algumas possíveis soluções logo abaixo:

*Problema 1)
"Nao consigo selecionar determinada data (pode variar) do mes de outubro"*
R: A explicação é simples: a depender de qual sistema operacional (windows
ou linux - os mais decorrentes) esse problema ocorre com dias 11, 22 ou 30
todos de outubro. É pq essas datas são "oficialmente" a data de mudança de
horário, e seu o SO da máquina cliente estiver ajustada para "Ajustar
automaticamente o horario de verão" terão esse bug q vc encontrou agora.
Como sabemos, nosso governo (nada organizado) sempre muda as datas de
daylight.. e nao existe um padrão para isso. Quando vc seleciona determinado
dia, que o SO "pensa" já ser horario de verão, o flash atualiza a data
voltando uma hora.. no caso, para 10/10 23:00.

Lembrem-se que o seus aplicativos Flex estão rodando na máquina DO CLIENTE,
portanto, as configurações do flash player estão sujeitas ao SO do Cliente!
Se vc simplesmente desativar o horario de verão automático do sistema
operacional, e reiniciar o browser, vai funcionar! (pode ser uma das
solluçóes, mas descrevo mais abaixo)

*Problema 2)
O Flex envia uma data 22/10 mas chega no servidor como 21/10. Como pode isso
acontecer?*
R: Acontece que o Flash Player trabalha com datas fortemente tipadas, e
essas datas também possuem informação de GMT.
Muitos servidores, ao trabalharem com datas, tb levam em consideração
informações sobre daylights e isso acaba influenciando no momento do seu
middleware serializar a informação vinda do flex (seja ele BlazeDS, amfphp,
fluorineFx, whatever). Portanto, muita atenção com as configurações de seus
servidores.


Possíveis soluções:

Problema 1)
 a) Desativar o ajuste automatico do sistema operacional do cliente (sim, é
chato, mas se vc tiver acesso a seus clientes, é melhor!)

 b) Trabalhar com datas usando String (bleh... é muito feio.. mas funciona)

 c) Trabalhar sempre com datas UTC (Univeral Time  YEESS!!! Podem reparar
que o flash sempre dá a data "local", e tb possui atributos para devolver os
valores UTC. Eles tb sao influenciados pelo "problema" de atrasar uma hora,
mas devido a nossa posição geográfica, nao será suficiente para alterar o
dia.)


Problema 2)
  a) trabalhar com datas UTC (vai depender das configurações do server tb)

  c) criar atributos transientes para calcular data/hora
(
http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=2&postId=13114
)


  d) Para quem usa BlazeDS/LCDS, pode extender a JavaAdapter e interceptar a
serialização dos parametros antes do método "invoke". Já fiz isso e funciona
muito bem, usando a mesma lógica da dica de cima, mas criando uma annotation
para marcar quais atributos Date (java.util.Date ou java.sql.Date) que eu
gostaria de "corrigir". Recomendo essa técnica para quem usa esses DS. Já
para outras linguagens q usa outros middlewares (amfphp, fluorinefx, etc...)
imagino ter algo equivalente, mas nao conheço.



Enfim... espero ter esclarecido, e q as dicas possam ajudá-los!


Abraços.










2009/8/28 Marcelo Caser <[email protected]>

> o que acontece quando seleciona dia 18 de outubro de 2009? permanece nessa
> data ou muda tb?
>
>
> 2009/8/28 Pedro Oliveira <[email protected]>
>
>> Só acontece com o fuso horário -4 (hora de santiago). Acho que a maior
>> parte dos membros desta lista está no fuso de Brasília (-3).
>> Se mudarem o fuso horário para -4 (precisa reiniciar o browser)
>> conseguirão verificar este bug.
>> Pelo que vi até agora, acontece com qualquer aplicação Flex. Mesmo as
>> disponibilizadas no site da Adbobe e no FlexExamples.
>>
>> []s Pedro Oliveira
>>
>>
>> 2009/8/28 Pedro Oliveira <[email protected]>
>>
>>> Ola pessoal
>>>
>>>
>>> tenho vários datefield na minha aplicação, todos assim :
>>>
>>> <mx:DateField x="10" y="105" width="76" id="df_data"
>>>   dayNames="['D', 'S', 'T', 'Q', 'Q', 'S', 'S']"
>>>   monthNames="['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho',
>>> 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']"
>>>   formatString="DD/MM/YY" firstDayOfWeek="1"/>
>>>
>>> acontece que não consigo selecionar o dia 11 de Outubro de 2009. Se clico
>>> nessa data, ele vai para 10/10.
>>> Já fiz o debug e realmente o valor de df_data.selectedDate após o clique
>>> é 10 de outubro e não 11 de outubro como selecionado.
>>>
>>> Alguém tem ideia do que possa estar acontecendo ?
>>>
>>
>>
>>
>>
>
> >
>


-- 
Mario Junior
Enterprise Java / Flex Architectures
Adobe Certified Expert Flex 3 with AIR

Sofshore Informática
http://www.sofshore.com.br
+55 (48) 3337 2003
Rua Pastor Willian Richard Schisler Filho 452 sl 102, 88034-100 Itacorubi
Florianopolis SC Brasil

--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a