Internet Date

User avatar
Jeff Barnes
Posts: 912
Joined: Sun Oct 09, 2005 1:05 pm
Location: Ontario, Canada
Contact:

Internet Date

Post by Jeff Barnes »

Hi,

Is there a way to get the current date via FWH from the internet?
Thanks,
Jeff Barnes

(FWH 12.01, xHarbour 1.2.1, Bcc582)
StefanHaupt
Posts: 824
Joined: Thu Oct 13, 2005 7:39 am
Location: Germany

Re: Internet Date

Post by StefanHaupt »

Jeff,

here is what you need. (not tested yet)

tsntp.rar
kind regards
Stefan
User avatar
Jeff Barnes
Posts: 912
Joined: Sun Oct 09, 2005 1:05 pm
Location: Ontario, Canada
Contact:

Re: Internet Date

Post by Jeff Barnes »

Thanks Stefan but I get this error:

Module: 'tsntp.prg' was compiled into PCODE version 7, this version of xHarbour expects version: 10
Thanks,
Jeff Barnes

(FWH 12.01, xHarbour 1.2.1, Bcc582)
StefanHaupt
Posts: 824
Joined: Thu Oct 13, 2005 7:39 am
Location: Germany

Re: Internet Date

Post by StefanHaupt »

Hmm, it´s an older lib, I have no sources, sorry.
kind regards
Stefan
StefanHaupt
Posts: 824
Joined: Thu Oct 13, 2005 7:39 am
Location: Germany

Re: Internet Date

Post by StefanHaupt »

I found parts of the source here
http://www4.zzz.com.tw/phpbb2/viewtopic.php?t=29

But the function GetSntp() is missing, maybe you can contact the author
kind regards
Stefan
User avatar
Jeff Barnes
Posts: 912
Joined: Sun Oct 09, 2005 1:05 pm
Location: Ontario, Canada
Contact:

Re: Internet Date

Post by Jeff Barnes »

Thanks Stefan,

I was able to get it working by linking the .lib file then adding an INCLUDE "TSNTP.PRG"

Code: Select all

Func    Test()
Local   aNet      := {},;
        nPort     := 123,;
        cIp       := "time.windows.com",;
        lSync     := .T.,;
        oSntp     := NIL;
        cNetDate
        oSntp := TSntp():New( cIP, nPort, lSync )

        If oSntp:GetData()
           // orignal code:   ? oSntp:Date(), "date"
           cNetDate := oSntp:Date()
        Else
           cNetDate := "99/99/99"
        EndIf

Return  cNetDate 
 

Code: Select all

// TSNTP.PRG
// Copyright by WenSheng come from TAIWAN
#include "hbclass.ch"
#include "common.ch"
CLASS   TSNTP

        DATA    cServer,;       // server name/ip
                nPort,;         // server port
                lSync,;         // Sync flag
                lError

        DATA    nYear,;
                nMonth,;
                nDay,;
                nWeek,;
                nDayOfYear

        DATA    nHours,;
                nMinute,;
                nSeconds

        METHOD  New(cServer, nPort, lSync)
        METHOD  GetData()
        MESSAGE DATE    METHOD  _Date()
        MESSAGE TIME    METHOD  _Time()

ENDCLASS

//
METHOD  New( cServer, nPort, lSync )    CLASS   TSNTP
DEFAULT cServer to "time.windows.com"   // 主機名稱
DEFAULT nPort   to 123                  // 主機 port
DEFAULT lSync   to .F.                  // 時間同步

        ::cServer   := cServer
        ::nPort     := nPort
        ::lSync     := lSync
        ::lError    := .F.

RETURN  Self

//
METHOD  GetData()   CLASS   TSNTP
Local   xRet    := GetSNTP( ::cServer, ::nPort, ::lSync )
        If ValType(xRet) == "N"
           ::lError   := .T.
           ::nYear    := 0
           ::nMonth   := 0
           ::nDay     := 0
           ::nHours   := 0
           ::nMinute  := 0
           ::nSeconds := 0
           ::nWeek    := 0
           ::nDayOfYear := 0
        Else
           ::lError := .F.
           //          0        1         2
           //          12345678901234567890
           // 取得資料 yyyymmddhhmmsswyda
           ::nYear    := Val( Substr( xRet,  1, 4 ))
           ::nMonth   := Val( Substr( xRet,  5, 2 ))
           ::nDay     := Val( Substr( xRet,  7, 2 ))
           ::nHours   := Val( Substr( xRet,  9, 2 ))
           ::nMinute  := Val( Substr( xRet, 11, 2 ))
           ::nSeconds := Val( Substr( xRet, 13, 2 ))
           ::nWeek    := Val( Substr( xRet, 15, 1 ))
           ::nDayOfYear := Val( Substr( xRet, 16, 3 ))
        EndIf

RETURN  ! ::lError

//
METHOD  _Date()     CLASS   TSNTP
RETURN  StoD( PadL( ::nYear, 4, "0" )+;
              PadL( ::nMonth, 2, "0" )+;
              PadL( ::nDay, 2, "0" ))

//
METHOD  _Time()     CLASS   TSNTP
RETURN  PadL( ::nHours, 2, "0" )+":"+;
        PadL( ::nMinute, 2, "0" )+":"+;
        PadL( ::nSeconds, 2, "0" )

 
Thanks,
Jeff Barnes

(FWH 12.01, xHarbour 1.2.1, Bcc582)
User avatar
Biel EA6DD
Posts: 680
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca
Contact:

Re: Internet Date

Post by Biel EA6DD »

An alternative using JSON, http://json-time.appspot.com/

Code: Select all

FUNCTION testTime()
   LOCAL oHttp, hTime,cTime
   oHttp:=CreateObject( "winhttp.winHttpRequest.5.1" )
   oHttp:Open("GET","http://json-time.appspot.com/time.json",.F.)
   oHttp:Send()
   oHttp:waitForResponse()
   IF oHttp:Status == 200
      hb_jsondecode(oHttp:ResponseText(),@hTime) //Parse JSON to hash
      cTime:=Str(hTime["hour"],2)+":"+Str(hTime["minute"],2)+":"+Str(hTime["second"],2)
      //--- just for test output data
      xBrowse(hTime) //All data in hash,
      MsgInfo(cTime+" GMT") //Time GMT
      MsgInfo(hTime["datetime"]) //Date time
      //--
   ENDIF
RETURN cTime
 
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
albeiroval
Posts: 323
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Internet Date

Post by albeiroval »

Hi jeff,

where I get "tsntp.rar" or hb_fun_getsntp(...) function

thanks,

Albeiro,
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
Jeff Barnes
Posts: 912
Joined: Sun Oct 09, 2005 1:05 pm
Location: Ontario, Canada
Contact:

Re: Internet Date

Post by Jeff Barnes »

Hi Alberio,

Stefan provided a link to tsntp.rar above but here it is again:


http://www.file-upload.net/download-684 ... p.rar.html
Thanks,
Jeff Barnes

(FWH 12.01, xHarbour 1.2.1, Bcc582)
User avatar
albeiroval
Posts: 323
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Internet Date

Post by albeiroval »

jeff,

I sent the link to babylon search, I do not want to install it, could you send me the zip file "tsntp.rar" to my mail "albeiroval@gmail.com" ..

thanks,

regards,

Albeiro,
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
Jeff Barnes
Posts: 912
Joined: Sun Oct 09, 2005 1:05 pm
Location: Ontario, Canada
Contact:

Re: Internet Date

Post by Jeff Barnes »

Hi Albeiro

Check your email :)
Thanks,
Jeff Barnes

(FWH 12.01, xHarbour 1.2.1, Bcc582)
User avatar
Ugo
Posts: 283
Joined: Sat Oct 15, 2005 6:40 am
Location: Turin, Italy

Re: Internet Date

Post by Ugo »

Hi all,

after download of sntp.lib and test it, i found that after, about 32 call date-time test, the result is only FAIL!

I have some question:

- There is a limit of use this lib? (max number calling in a exe session?)
- How to remove it?
- Is possible to obtain more time precision from internet sntp?
- Exist GetSntp source code, how find it?

Thank you for your reply.
Ciao, best regards,
Ugo
ADutheil
Posts: 352
Joined: Sun May 31, 2009 6:25 pm
Location: Salvador - Bahia - Brazil

Re: Internet Date

Post by ADutheil »

I use this function to check date

Code: Select all

FUNCTION Vencido
LOCAL nTime := fCreate( "chkdtime.bat" )
LOCAL cBuff := ""
LOCAL lRetu := .F.
LOCAL cDbar := "/" // 
LOCAL aEOL := { Chr(13) + Chr(10), Chr(13), Chr(10) }
 
fWrite( nTime, "w32tm /stripchart /samples:1 /dataonly /computer:time.window.com >chkdtime.txt" )
fClose( nTime )
ShellExecute( 0, "open", "chkdtime.bat",,, )
WaitSeconds( 2 )
IF ( nTime := fOpen( "chkdtime.txt" ) ) > 0
    WHILE hb_fReadLine( nTime, @cBuff, aEOL  ) = 0
        IF cDbar $ cBuff
            cBuff := subStr( cBuff, at( cDbar, cBuff ) - 2 )
            IF cToD( subStr( cBuff, 1, at( " ", cBuff ) - 1 ) ) > cToD( "01/01/14" )
                msgStop( "O PERÍODO DE AVALIAÇÃO TERMINOU" + CRLF + "SOLICITE UMA VERSÃO ATUALIZADA AO DESENVOLVEDOR", "Atenção" )
                lRetu := .T.
            ENDIF
            EXIT
        ENDIF
    ENDDO
    fClose( nTime )
ENDIF
fErase( "chkdtime.bat" )
fErase( "chkdtime.txt" )
RETURN ( lRetu )
Regards,

André Dutheil
FWH 13.04 HB 3.2 BCC 5.82 MinGW 4.5.2 MSVS 10
User avatar
Ugo
Posts: 283
Joined: Sat Oct 15, 2005 6:40 am
Location: Turin, Italy

Re: Internet Date

Post by Ugo »

Hi Andrè
ADutheil wrote:I use this function to check date ...
Thank you, but my necessity is to have in return the exact TIME more exactly possible.

From my search, the ntp protocol can return exactly also 1/1000 sec!

The function "getsntp" is a good solution, is quick and use the standard protocol ntp.

The question is: where find it?

Can you help me?

Thank in advance.
Ciao, best regards,
Ugo
User avatar
James Bott
Posts: 4654
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA
Contact:

Re: Internet Date

Post by James Bott »

Ugo,

There are two links to the source code further up in this message thread.

James
Post Reply