deutschsprachige FoxPro User Group
Forum View
Home
  
  Zeit aus dem Internet holen- #23631 in section [740738]
Sec: (1) Allgemeines
Von: Harro Schippan
An: All
Am/Um: 14.07.2017 15:24:55 gelesen

Hallo,
suche einen Weg aus dem Internet mir die aktuelle Zeit zu holen.

Mein Problem ist, mein Programm muß auf Rechnern laufen, wo der User kein Recht hat Datum und Zeit zu ändern. Mit einer Synchronisation komme ich nicht weiter.

Ich möchte in einem VFP-Programm mir Datum/Zeit aus dem Internet zu holen.

Ich brauche die korrekte Zeit um einen HTTPRequest an einen entfernten Server zu senden. In diesem Request muß ich einen Zeitbereich konfigurieren.

Mein Problem ist, daß die Clients oft nicht die korrekte Zeit haben und falsche Requests gesendet werden.

Mit dem Programm hier unten funktioniert es. Ich bin mir aber nicht sicher, ob ich dauerhaft von der Adresse eine Antwort bekomme.

Hab jetzt schon viel recherchiert, aber ich bin wohl der einzige der das Problem hat.

Hoffe jemand hat einen Rat.

Viele Grüße
Harro

***********************************************************************
CLEAR 
PUBLIC oHTTP
***********************************************************************
cPath = "http://httpbin.org/get?show_env=1"

oHTTP = createobject("WinHTTP.WinHTTPRequest.5.1")
oHTTP.open("GET", cPath, .f.)
oHTTP.SetRequestHeader("UserAgentString", "Visual FoxPro 9")
oHTTP.SetRequestHeader("Content-Type", "text/xml")
oHTTP.send()

IF oHTTP.status <> 200 && HTTP OK
    ? "HTTP code " + transform(oHTTP.status) + " was returned"
ENDIF 

? oHTTP.ResponseText
cResult = oHTTP.ResponseText
cTime   = LEFT(STREXTRACT(cResult, [Start": "], ["]),10)
ltTime  = DATETIME(1970, 1, 1, 0, 0, 0) + INT(VAL(cTime   ))
? REPLICATE("*",80)
? "Internet UTC:", ltTime     at 14
locTime  = Sommerzeit2 (DATETIME())
? "Lokal UTC:", locTime   at 14

LnDiff = locTime-ltTime

? "Differenz", ALLTRIM(TRANSFORM(LnDiff))+" Sekunden"
? REPLICATE("*",80)
lnGrenzwert = 30
DO CASE 
    CASE LnDiff <= lnGrenzwert  AND NOT LnDiff <= -lnGrenzwert 
        ? "Alles gut"
    CASE LnDiff > lnGrenzwert 
        ? "Lokale Uhr geht vor."
        ? "Mehr als "+lnGrenzwert +" Sekunden", lnDiff
    CASE LnDiff < -lnGrenzwert  
        ? "Lokale Uhr geht nach."
        ? "Lokal mehr als "+ALLTRIM(TRANSFORM(lnGrenzwert)) +" Sekunden Differenz.", lnDiff
        
    OTHERWISE 
        ? "Ja, watt denn nu?"
ENDCASE 
? REPLICATE("*",80)

RELEASE oHTTP 
***********************************************************************

*****************************************************
* Zeitanpassung für Sommer- Winterzeit
*****************************************************
FUNCTION Sommerzeit2 (OZeit)
    SET FDOW TO 2
    wPrüfDatum = oZeit
    wNeuDatum = wPrüfDatum 
    *****************************************************
    * Beginn Sommerzeit
    wSuchjahr      = YEAR(wPrüfDatum )
    wDatum         = DATE(wSuchjahr,3,31)
    wWochentag     = DOW(DATE(wSuchjahr,3,31),2)
    wBegSommerzeit = wDatum-wWochentag
    *****************************************************
    * Beginn Winterzeit
    wSuchjahr      = YEAR(wPrüfDatum )
    wDatum         = DATE(wSuchjahr,10,31)
    wWochentag     = DOW(DATE(wSuchjahr,10,31),2)
    wBegWinterzeit = wDatum-wWochentag
    *****************************************************
    DO CASE 
        CASE wPrüfDatum < wBegSommerzeit && "alte Winterzeit"
            wNeuDatum  = wNeuDatum - 60*60
        CASE wPrüfDatum >= wBegWinterzeit && "neue Winterzeit"
            wNeuDatum  = wNeuDatum - 60*60
        CASE BETWEEN(DATE(YEAR(wPrüfDatum),MONTH(wPrüfDatum),DAY(wPrüfDatum)),wBegSommerzeit ,wBegWinterzeit-1 )
            *? "Sommerzeit"
            wNeuDatum  = wNeuDatum - 120*60
        OTHERWISE 
            ? "oh Weh, da fehlt was"
            ? wPrüfDatum,wBegSommerzeit ,wBegWinterzeit-1 
            ?
    ENDCASE 
RETURN wNeuDatum 
*****************************************************






Harro Schippan   14.07.2017 15:24
Tom Knauf  14.07.2017 17:13
Harro Schippan  14.07.2017 17:36
Harro Schippan  17.07.2017 08:53
Harro Schippan  17.07.2017 08:57
Matthias Kahlert  17.07.2017 20:46
Harro Schippan  18.07.2017 08:32
Thomas Geissler  18.07.2017 09:25
Harro Schippan  18.07.2017 11:01
Thomas Geissler  18.07.2017 12:45
Harro Schippan  18.07.2017 13:39
Matthias Kahlert  25.07.2017 01:19
Harro Schippan  25.07.2017 10:02
  
zurück zum Forum