Code: Alles auswählen
/// <summary>
/// <para>
/// <bold>EN: Calculate a timestamp in Unix Format</bold>
/// without parameters = now !
/// dZielTag = date value or NIL (date())
/// nSeconds = numeric seconds value, string time value like time() or NIL (time())
/// <bold>DE: Zeitstempel im Unix Format erstellen</bold>
/// ohne Parameter wird der aktuelle Zeitpunkt gewählt !
/// dZielTag = Datumsvariable oder NIL (date())
/// nSeconds = numerischer Sekundenwert, Zeichenkette im time() Format oder NIL (time())
/// </para>
/// </summary>
///
/// <param name="dZielTag">Test</param> // weder hier noch unter summary hat das eine Wirkung ?
/// <paramref name="33"/>
///
/// <returns>
/// UNIX TimeStamp (Integer)
/// </returns>
///
FUNCTION TimeStampUnix(dZielTag,nSeconds)
LOCAL dTestTag, nTage
LOCAL dUnixStart := cToD("01.01.1970")
LOCAL nUnixTimeStamp := 0 // LONG erzwingen, darf nicht geändert werden !
IF dZielTag = NIL
dZielTag := date()
dTestTag := dZielTag // Tageswechsel erkennen mit dieser Variable
ENDIF
DO CASE
CASE valtype(nSeconds) = "N" // seconds
nSeconds := int(nSeconds)
CASE valtype(nSeconds) = "C" // cTime() format
nSeconds += alltrim(nSeconds) + "00000000000"
nSeconds := val(SubStr( nSeconds, 1, 2)) * 3600 + ;
val(SubStr( nSeconds, 4, 2)) * 60 + ;
val(SubStr( nSeconds, 7, 2))
OTHERWISE
// Secoonds erzeugen
nSeconds := int(seconds())
IF date() <> dTestTag
// Tageswechsel hat zwischen date() und seconds() stattgefunden
nSeconds := 86399 // die Sekunde vor Mitternacht
ENDIF
END
nTage := dZielTag - dUnixStart // dUnixstart ist eigentlich der Tag davor aus unserer Sicht
// dZieltag ist aber auch gestern, eventuell hebt sich das auf oder Abzüge !
// on most days maps to 60*60*24 = 86400 seconds. But not on all days.
nUnixTimeStamp := int( nTage * 86400 + nSeconds )
RETURN nUnixTimeStamp
Das ist schon mal hilfreich, aber die zusätzliche Infos für Parameter etc. bekomme ich nicht angezeigt.
Wer hat da mehr Erfahrung, aus der Hilfeseite werde ich nicht schlau.