none
Horario de verao

    Вопрос

  • Boa tarde pessoal !! Eu to usando o Vb.Net 2003 e estava precisando saber como posso tratar o horario de verao.

    Eu pensei em algumas saidas... Chamar a tela do Relogio ou Pegar a informacao do windows sabendo se o pc esta com a opcao de horario de verao marcada !!


    Espero que tenha ficado claro e fico no aguardo !! Enquanto isso vou pesquisando...

    Valeu

    17 января 2007 г. 17:49

Ответы

  • Eu consegui achar uma forma de chamar a tela do Relogio do Windows com o foco na aba do Fuso horario.

    Fiz assim:

    Call Shell("rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1", vbNormalFocus)

    Agora nao quero encerrar as postagens desse topico... Se alguem souber como eu pego a informacao diretamente no windows post aki ! hehehehehhe


    Valeu !

    17 января 2007 г. 18:36
  • Dim tz As TimeZone = TimeZone.CurrentTimeZone
    Console.WriteLine(tz.IsDaylightSavingTime(DateTime.Now).ToString())

    No Framework 2.0 isto também funciona:

    Dim dt As DateTime = DateTime.Now
    Console.WriteLine(dt.IsDaylightSavingTime().ToString())

    O retormo correto depende de o computador estar corretamente configurado para o início e fim do horário de verão, o que não é o caso por configuração padrão do SO já que no Brasil se muda todo ano as datas ao invés de se iniciar e terminar o horário de verão em datas fixas.

    Para descobrir a configuração atual do computar para início/fim do horário de verão, faça isto:

    Dim hv As Globalization.DaylightTime = tz.GetDaylightChanges(DateTime.Now.Year)
    Console.WriteLine("Início {0:yyyy-MM-dd}, Fim {1:yyyy-MM-dd}", hv.Start, hv.End)

    A opção para ajustar automaticamente o computador para o horário de verão também deve estar habilitada.

     

    18 января 2007 г. 1:59

Все ответы

  • Eu consegui achar uma forma de chamar a tela do Relogio do Windows com o foco na aba do Fuso horario.

    Fiz assim:

    Call Shell("rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1", vbNormalFocus)

    Agora nao quero encerrar as postagens desse topico... Se alguem souber como eu pego a informacao diretamente no windows post aki ! hehehehehhe


    Valeu !

    17 января 2007 г. 18:36
  • Dim tz As TimeZone = TimeZone.CurrentTimeZone
    Console.WriteLine(tz.IsDaylightSavingTime(DateTime.Now).ToString())

    No Framework 2.0 isto também funciona:

    Dim dt As DateTime = DateTime.Now
    Console.WriteLine(dt.IsDaylightSavingTime().ToString())

    O retormo correto depende de o computador estar corretamente configurado para o início e fim do horário de verão, o que não é o caso por configuração padrão do SO já que no Brasil se muda todo ano as datas ao invés de se iniciar e terminar o horário de verão em datas fixas.

    Para descobrir a configuração atual do computar para início/fim do horário de verão, faça isto:

    Dim hv As Globalization.DaylightTime = tz.GetDaylightChanges(DateTime.Now.Year)
    Console.WriteLine("Início {0:yyyy-MM-dd}, Fim {1:yyyy-MM-dd}", hv.Start, hv.End)

    A opção para ajustar automaticamente o computador para o horário de verão também deve estar habilitada.

     

    18 января 2007 г. 1:59
  • Angus MacGyver,

    Mais uma vez OBRIGADO ! Valeu mesmo kara... Eu tinha arranjado um jeito de contornar isso, mas o seu jeito eh mais direto.

    Valeu kara !! t+

    18 января 2007 г. 13:05
  • Por favor estou com o mesmo problema...

    Mas alguem sabe como fazer para:

     

    Desabilitar esta opção para ajustar automaticamente o computador para o horário de verão também deve estar habilitada.

     

    obrigado

     

    Anderson

  • ?? Desabilitar devendo estar habilitada?!

     

    De qualquer forma, no XP, se você tiver direitos de administrador, dê um duplo-clique sobre o relógio e na aba "Fuso horário" do diálogo que será aberto haverá um CheckBox que lhe permitirá habilitar e desabilitar a opção.

    7 июня 2007 г. 10:35
  • Obrigado pela ajuda....

     

    Porém gostaria de saber se não há uma forma de fazer isto via código de programação....

     

    grato pela atenção....

     

    Anderson

    8 июня 2007 г. 19:50
  • Sim, basta mudar o valor do registro que controla isso. Para desabilitar crie o valor "DisableAutoDaylightTimeSet" com o dado de valor 1 (tipo DWORD) na chave "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation":

     

    Dim hVerao As RegistryKey

    hVerao = Registry.LocalMachine.CreateSubKey("SYSTEM\CurrentControlSet\Control\TimeZoneInformation")

     

    hVerao.SetValue("DisableAutoDaylightTimeSet", 1, RegistryValueKind.DWord)

     

    Para habilitar mude o dado de valor para 0 ou simplesmente remova o valor, que é o que o Windows faz:

     

    hVerao.DeleteValue("DisableAutoDaylightTimeSet", False)

     

    O valor False no segundo parãmetro do método DeleteValue() acima evita que um erro seja gerado se o valor não existir. Se quiser pegar o erro, retire o parâmetro e use um bloco Try..Catch etc.

     

    Para usar o código importe o namespace "Microsoft.Win32".

     

     

    8 июня 2007 г. 20:43