Jump to content
Fivewin Brasil

Hora Certa(RESOLVIDO)


Arthur Silvestre

Recommended Posts

Olá, sei que vc já resolveu, mas só para ilustrar mais uma opção, eu utilizo assim:

 

Function HrDtInternet()
   Local oHttp, ;
         cResp1 	  := "", ;
         cResp  	  := "", ;
         cHora      := "", ;
         cData      := ""
         
   IF !IsInternet()     
      MsgWait( "Não foi possível conectar a Internet para"+CRLF+;
      			"buscar a Data e Hora de Brasilia"+CRLF+;
      			"A Data e a Hora serão setados conforme"+CRLF+;
      			"o que tiver configurado no micro","Internet", 2)
		Return( {DtoC(Date()), Time()} )
   ENDIF

   Try
      oHttp := CreateObject("winhttp.winhttprequest.5.1")
      oHttp:Open("GET","http://www.horacerta.com.br/index.php?city=sao_paulo",.f.)
      oHttp:Send()
      cResp1 := oHttp:ResponseText()
   Catch
      Return( {DtoC(Date()), Time()} )
   End Try
	*
	* MemoWrit( "HoraNet.txt", cResp1 )
	*
	*<input name="mostrador" type="text" size="25" value="19/09/2011 - 01:02:00 PM" />
	*
   cResp     := SubStr( cResp1 , At( '<input name="mostrador"', cResp1 ) )
   cResp     := Substr( cResp	 , 1, At( '/>', cResp )-2 )
   cDados    := SubStr( cResp  , At( 'value="', cResp )+7 )
   *
   cData := SubStr( cDados,  1, 10)
   cHora := SubStr( cDados, 14 )
	*
	If "PM" $ cHora
		cHora := Str(Val(SubStr(cHora,1,2))+12,2)+SubStr(cHora,3,7)
	End
	*
Return( {cData, cHora} )

Theotokos, como q eu faço usando esta sua função, para checar se a Hora da Internet está DIFERENTE da Hora do computador?

 

   IF  Time() # cHora 
 
      ? [mensagem de hora errada]
 
  ENDIF
 
Obg, abs.
 
Link to comment
Share on other sites

Theotokos, como q eu faço usando esta sua função, para checar se a Hora da Internet está DIFERENTE da Hora do computador?

 

 

   IF  Time() # cHora 
 
      ? [mensagem de hora errada]
 
  ENDIF
 
Obg, abs.
 

...

 

....

aHrDt := HrDtInternet()

 

If aHrDt[1] <> Date()

  MsgInfo("Data do Computador Diferente")

EndIf

 

If aHrDt[2] <> Transform(Time,"99:99")

  MsgInfo("Hora do Computador Diferente")

EndIf

Link to comment
Share on other sites

PERFEITO CARISSIMO, Very thanks!!

 



   // VERIFICA A DATA E HORA DE BRASILIA E CHECA SE ESTA IGUAL AO DO COMPUTADOR
   // CONTRIBUICAO: FORUM FIVEWIN - SHOW() - Theotokos.
 
   aHrDt := HrDtInternet()
 
   // aHrDt[1]  // A data de Brasilia
   IF CTOD( aHrDt[1])  <> Date()
 
      MsgInfo( OemToAnsi( "ATENۂO USUµRIO:                        " ) +CRLF+;
               OemToAnsi( "A DATA DO SEU MICRO ESTµ DIFERENTE DA DATA DE " + ;
                          "BRASILIA." )                                +CRLF+;
               OemToAnsi( "A DATA DO SEU MICRO : " + DTOC( Date() ) ) +CRLF+;
               OemToAnsi( "A DATA DE BRASILIA  : " + aHrDt[1]       ) +CRLF+;
               OemToAnsi( "SINCRONIZE O RELàGIO DO WINDOWS..."       ) +CRLF+;
               OemToAnsi( "PARA FICAR COM DATA E HORA DE BRASILIA. " ) +CRLF+;
               OemToAnsi( "TECLE <ENTER> PARA CONTINUAR...         " ) ,     ;
               OemToAnsi( "SINCRONIZE O RELàGIO DO WINDOWS...      " ) )
 
   ENDIF
 
   // aHrDt[2]  // A hora de Brasilia
   IF aHrDt[2] <> Transform(Time(),"99:99")
 
      MsgInfo( OemToAnsi( "ATENۂO USUµRIO:                        " )+CRLF+;
               OemToAnsi( "A HORA DO SEU MICRO ESTµ DIFERENTE DA HORA DE " + ;
                          "BRASILIA." )                                +CRLF+;
               OemToAnsi( "A HORA DO SEU MICRO : " + TIME()         ) +CRLF+;
               OemToAnsi( "A HORA DE BRASLIA   : " + aHrDt[2]       ) +CRLF+;
               OemToAnsi( "SINCRONIZE O RELàGIO DO WINDOWS..."       ) +CRLF+;
               OemToAnsi( "PARA FICAR COM HORA E DATA DE BRASILIA. " ) +CRLF+;
               OemToAnsi( "TECLE <ENTER> PARA CONTINUAR...         " ) ,     ;
               OemToAnsi( "SINCRONIZE O RELàGIO DO WINDOWS...      " ) )
 
   ENDIF

Link to comment
Share on other sites

Olá pessoal...

 

Com a inestimável ajuda do Gilmer para completar o exemplo do Theotokos, consegui que o meu Sistema faça a atualização da Data e Hora do Computador automaticamente e de forma que o Usuário não precise digitar nada.

 

Segue o que foi acrescentado :

 

   wDIA:=VAL(SUBSTR(cData,1,2))

 

   wMES:=VAL(SUBSTR(cData,4,2))
   wANO:=VAL(SUBSTR(cData,7,4))
 
   wHOR:=VAL(SUBSTR(cHora,1,2))
   wMIN:=VAL(SUBSTR(cHora,4,2))
   wSEG:=VAL(SUBSTR(cHora,7,2))
 
   SETNEWTIME(wHOR,wMIN,wSEG)
 
   SETNEWDATE(wANO,wMES,wDIA)
 
 
Um abraço
Link to comment
Share on other sites

Olá pessoal...

 

Com a inestimável ajuda do Gilmer para completar o exemplo do Theotokos, consegui que o meu Sistema faça a atualização da Data e Hora do Computador automaticamente e de forma que o Usuário não precise digitar nada.

 

Segue o que foi acrescentado :

 

   wDIA:=VAL(SUBSTR(cData,1,2))

 

   wMES:=VAL(SUBSTR(cData,4,2))
   wANO:=VAL(SUBSTR(cData,7,4))
 
   wHOR:=VAL(SUBSTR(cHora,1,2))
   wMIN:=VAL(SUBSTR(cHora,4,2))
   wSEG:=VAL(SUBSTR(cHora,7,2))
 
   SETNEWTIME(wHOR,wMIN,wSEG)
 
   SETNEWDATE(wANO,wMES,wDIA)
 
 
Um abraço

Desconfiei desde o principio, NÃO FUNCIONA em rWINDOWS 7, uma pena.

abs,

Link to comment
Share on other sites

João...

 

Você que se expressa fluentemente em espanhol, poderia fazer o favor de perguntar ao Linares qual a nova chamada da API do Win7 e Win8 para substituir esses comandos.

 

grato.

 

abração.

Mi caro amigo, ya hice la pregunta para el maestro Antonio Liñares en el foro internacional.

Estoy en el aguardo de una respuesta.

 

Mira el link en que jo pregunto cual és el comando para rWindows 7.

 

http://forums.fivetechsupport.com/viewtopic.php?f=6&t=26199

 

Gracias, regards, saludos.  Um forte abraço CORINTHIANO!!! KKKKKKKKKKKKKKKKKKK, VAI CORINTHIANS!!!

Link to comment
Share on other sites

Veja abaixo as inumeras funções que podem lhe auxiliar em formatações de HORA e DATA: 

 

Nenhum funcionou em rWindows 7, não gera erro, mas ele não reconhece o comando nem a PAU Juvenal.

 

AddMonth() adiciona ou retira um número de meses para / de um valor de data. 

BoM() retorna a data do primeiro dia de um mês. 

BoQ() retorna a data do primeiro dia de um trimestre. 

BoY() retorna a data do primeiro dia de um ano. 

CDoW() retorna o nome de um dia da semana a partir de uma data. 

CMonth() retorna o nome de um mês a partir de uma data. 

CtoD() converte uma seqüência de caracteres em uma data valor CtoDoW() retorna o número de um dia da semana do seu nome. 

CtoMonth() retorna o número de um mês de seu nome. 

CtoT() converte uma seqüência de caracteres em um DateTime valor Data() retorna a data atual do sistema operacional. 

DateTime() retorna a data e hora atuais do sistema operacional. 

Day() extrai o dia Numérico Número de um valor de data. 

Days() calcula o número de dias de segundos decorridos. 

DaysInMonth() retorna o número de dias em um mês. 

DaysToMonth() retorna o número de dias para o início de um mês de janeiro primeiro. 

DMY() Uma data como "dd. mês yyyy" formatos 

DoW() determina o dia da semana a partir de uma data numérico. 

DoY() retorna o número de um valor de data dia em um ano. 

DtoC() converte um valor de data em uma seqüência de caracteres no formato Data Set. 

DtoS() converte um valor de data em uma seqüência de caracteres no formato AAAAMMDD. 

ElapTime() calcula que o tempo decorrido entre um início e uma hora de término. 

EoM() retorna a data do último dia de um mês. 

EoQ() retorna a data do último dia de um trimestre. 

EoY() retorna a data de último dia de um ano. 

HOUR() extrai a hora de um IsLeap() valor dateTime verifica se um valor de data pertencer a um ano bissexto. 

LastDayoM() retorna o número de dias em um mês. 

MAX() retorna o maior valor de duas Numerics ou datas. 

MDY() formatos uma data como "Mês dd, aa". 

MilliSec() define um tempo de espera em milissegundos. 

MIN() retorna o valor de duas datas ou Numerics smallerr. 

MINUTE() extrai o minuto de uma Month() valor dateTime extrai o mês Numérico Número de um valor de data. 

NtoCDoW() converte um dia da semana numérico ao nome. 

NtoCMonth() converte um mês numérico ao nome. 

Quarter() retorna o trimestre que pertence a uma data. 

Seconds() retorna que o número de segundos transcorrido desde a meia-noite SecondsCpu() retorna o tempo de CPU usado pelo processo atual. 

Secs() calcula o número de segundos de uma seqüência tempo. 

SecToTime() Converts numéricos segundos em uma hora formatado a seqüência de caracteres. 

SetDate() altera a data do sistema de um valor de data. 

SetNewDate() altera a data do sistema a partir dos valores numéricos. 

SetNewTime() altera a hora do sistema a partir dos valores numéricos. 

SetTime() altera a hora do sistema de uma seqüência de tempo. 

ShowTime() exibe a hora do sistema continuamente em uma posição de tela especificado. 

Converts StoD() um "AAAAMMDD" formatado seqüência para uma data valor StoT() converte um "YYYYMMDDhhmmss.ccc" formatado seqüência a um SX_DtoP() valor dateTime converte um valor de data em uma seqüência caracteres 3 bytes. 

SX_PtoD() Unpacks um valor de data 3 bytes compactados. 

TIME() recupera a hora do sistema como uma seqüência de caracteres formatada. 

TimeToSec() calcula o número de segundos desde a meia-noite. 

TimeValid() verifica se uma seqüência de caracteres é uma seqüência de tempo válido. 

TString() Converts numéricos segundos em uma hora formatado a seqüência de caracteres. 

TtoC() converte um valor datetime em uma seqüência de caracteres no formato Data Set e Set time. 

TtoS() converte um valor de data em uma seqüência de caracteres no formato YYYYMMDDhhmmss.ccc. 

WaitPeriod() define um período de espera e permite loops tempo controlado. 

Calculates Week() a semana numéricos a partir de uma data. 

WoM() calcula o número da semana em um mês. 

YEAR() extrai o ano numérico de um valor de data
Link to comment
Share on other sites

Por enquanto a solução foi esta, mostrar a hora de Brasilia na tela, não é a melhor solução, mas pelo menos o uçuário olha.


// Funcao Para Mostrar a Hora de Brasilia em Tempo Real na Tela.
 
#Include "FiveWin.ch"
 
STATIC oDlg, oTimer, oWnd
 
FUNCTION BRASILIA()
 
   LOCAL oIco, aGet := ARRAY(5), cHoraBra := "        "
 
   DEFINE DIALOG oDlg TITLE "Hora de Brasilia" COLOR "W+/B"
 
   @ 0.50, 09 SAY "Hora de Brasilia" SIZE 050, 10 OF oDlg                    ;
              COLORS CLR_BLACK, CLR_WHITE CENTER
 
   @ 2, 08 GET aGet[1] VAR cHoraBra PICTURE "99:99:99" OF oDlg CENTER
 
   aGet[1]:lBtnTransparent := .t.       // transparent button get aGet[1]
   
   aGet[1]:Disable()                    // When( .F. )
   aGet[1]:lBtnTransparent := .t.       // transparent button get aGet[1]
   aGet[1]:lAdjustBtn      := .t.       // Button Get Adjust Witdh aGet[1]
   aGet[1]:lDisColors      := .f.       // Deactive disable color
   aGet[1]:nClrTextDis     := CLR_WHITE // Color text disable status
   aGet[1]:nClrPaneDis     := CLR_BLACK // Color Pane disable status
   
   aGet[1]:lAdjustBtn      := .t.
 
   @ 3, 10 BUTTON "&Saida" SIZE 40, 12 DEFAULT                               ;
           ACTION( oTimer:DeActivate(), oDlg:End() ) CANCEL UPDATE
 
   ACTIVATE DIALOG oDlg CENTERED  ;
            ON INIT( ACIONA_TIMER( aGet, oWnd ) )
 
RETURN NIL
 
//-> ACIONA O TIMER DO RELOGIO DE BRASILIAR NO DIALOGO
 
STATIC FUNCTION ACIONA_TIMER( aGet, oWnd )
 
   DEFINE TIMER oTimer INTERVAL 0   OF oDlg                            ;
          ACTION HORABRASILIA( aGet, oWnd )
 
   ACTIVATE TIMER oTimer
 
RETURN NIL
 
//-> HORA EXATA DE BRASILIA
 
FUNCTION HORABRASILIA( aGet, oWnd )
 
   LOCAL oHttp, cHtml
   LOCAL cHora
 
   IF IsInternet() // Se tiver internet ativa
 
      oHttp := CreateObject( "winhttp.winhttprequest.5.1" )
      oHttp:Open( "GET", "http://24timezones.com/pt_horamundial/brasilia_hora_local.php" , .F. )
      oHttp:Send()
      cHtml:= oHttp:ResponseText()
      cHtml:= left(alltrim(StrExtract(cHtml, '<span id="currentTime">', '</span>' )),8)
 
      cHora := TRANSF( cHtml, "99:99:99" )
 
      aGet[1]:VARPUT( cHora )
      aGet[1]:Refresh()
 
   ELSE
 
      cHora := [SEM NET]
 
      aGet[1]:VARPUT( cHora )
      aGet[1]:Refresh()
 
   ENDIF
 
RETURN NIL
 
STATIC FUNCTION StrExtract(cText,cAfter,cBefore)
 
   LOCAL cRet := SUBSTR(cText,AT(cAfter,cText) + LEN(cAfter))
   LOCAL n
 
   IF (n := AT(cBefore,cRet)) > 0
      cRet := LEFT(cRet,n - 1)
   ENDIF
 
RETURN(cRet)
 
//-> Funcao para checar a Internet
FUNCTION IsInternet()
 
   LOCAL cIp, cVret := .F.
 
   WsaStartUp()
 
   // conforme pessoal do forum, e para chamar duas vezes
   cIp := GETHOSTBYNAME( "microsoft.com" )
   cIp := GETHOSTBYNAME( "microsoft.com" )
 
   WsaCleanUp()
 
   // Seguranca caso o provedor da microsoft esteja fora do ar...
   IF ( cIp <= "0.0.0.0" )
 
      WsaStartUp()
 
      cIp := GetHostByName( "google.com" )
      cIp := GetHostByName( "google.com" )
 
      WsaCleanUp()
 
   ENDIF
 
RETURN( cIp<>"0.0.0.0" )
 
// FIM DO PROGRAMA
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...