FormatHTTPDate() & ParseHTTPDate() - HTTP Datumsangaben
Verfasst: 20.09.2006 16:00
Hallo!
Ich dachte, ich lasse euch mal an meiner überaus starken Programmierfähigkeit teilhaben, *hüstel*
Den Code habe ich im Zuge meines Projektes gecoded, aber ich dachte mir: "Warum soll ich den adneren vorenthalten?"
OK, hier beide Codes, ersteinmal:
Läuft auf 3.94 und 4.00, bei 3.94 muss nur ParseHTTPDate() eben ganz kurz angepasst werden. Die ReplaceStrings() Prozedur wird von beiden anderen Proceduren gebraucht, kann aber auch einzeln für andere Zwecke genutzt werden! Sie kann mehrere einzelne ReplaceString()-Aufrufe ersetzen; diese Prozedur habe ich schon früher in einem anderen Thread gepostet.
Wirkung/Nutzen: Man kann Datumsangaben gemäß dem HTTP-Protokoll erstellen und einlesen! Diesen Beitrag schrieb ich Beispielsweise laut HTTP-Datum am/um:
Diese Datumsangaben sind Sprachunabhängig und haben immer dieses Schema, können somit besser maschinell eingelesen werden. Die Benutzung des Codes ergibt sich von selbst, hier nochmal eine kurze Erläuterung:
formatHTTPdate(datum) — Wandelt ein Datum, das als Zahl vorliegt, in einen HTTP-Datumsstring um
parseHTTPdate(datum$) — Wandelt einen HTTP-Datumsstring, wie die andere Prozedur ihn erzeugt, zurück in ein zahlendatum um, welches z. B. direkt mit den PB-internen Date-Befehelen verarbeitet werden kann.
Ich dachte, ich lasse euch mal an meiner überaus starken Programmierfähigkeit teilhaben, *hüstel*


Den Code habe ich im Zuge meines Projektes gecoded, aber ich dachte mir: "Warum soll ich den adneren vorenthalten?"
OK, hier beide Codes, ersteinmal:
Code: Alles auswählen
Procedure.s ReplaceStrings(String$, StringsToFind$, StringsToReplace$, Seperator$="|")
Protected n.l
For n=1 To CountString(StringsToFind$, Seperator$)+1
String$=ReplaceString(String$, StringField(StringsToFind$, n, Seperator$), StringField(StringsToReplace$, n, Seperator$))
Next
ProcedureReturn String$
EndProcedure
Procedure parseHTTPdate(datum$)
datum$=Trim(ReplaceStrings(datum$, "Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec", "01|02|03|04|05|06|07|08|09|10|11|12"))
ProcedureReturn ParseDate("Day, %dd %mm %yyyy %hh:%ii:%ss GMT", datum$)
EndProcedure
Procedure.s formatHTTPdate(datum)
Protected DayOfWeek, res$
res$=FormatDate(", %dd m%mm %yyyy %hh:%ii:%ss GMT", datum)
res$=ReplaceStrings(res$, "m01|m02|m03|m04|m05|m06|m07|m08|m09|m10|m11|m12", "Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec")
ProcedureReturn StringField("Sun,Mon,Tue,Wed,Thu,Fri,Sat", DayOfWeek(datum)+1, ",")+res$
EndProcedure
Wirkung/Nutzen: Man kann Datumsangaben gemäß dem HTTP-Protokoll erstellen und einlesen! Diesen Beitrag schrieb ich Beispielsweise laut HTTP-Datum am/um:
Code: Alles auswählen
Wed, 20 Sep 2006 15:54:56 GMT
formatHTTPdate(datum) — Wandelt ein Datum, das als Zahl vorliegt, in einen HTTP-Datumsstring um
parseHTTPdate(datum$) — Wandelt einen HTTP-Datumsstring, wie die andere Prozedur ihn erzeugt, zurück in ein zahlendatum um, welches z. B. direkt mit den PB-internen Date-Befehelen verarbeitet werden kann.