| |
|
|
Jörg Sellmeyer | Die Datumsfunktionen in XProfan sind (finde ich) nicht ganz leicht zu durchschauen. Außerdem ist die Syntax etwas ...hrm... umständlich. Mit ein paar eigenen Prozeduren lassen sich daraus aber schnelle und übersichtliche Terminfunktionen erzeugen:
Proc Gestern
Return Dt("getDate",0,dt("incDay",!now,-1))
EndProc
Proc Morgen
Return Dt("getDate",0,dt("incDay",!now,1))
EndProc
'Die ersten beiden Prozeduren sind nur aus Gründen der Bequemlichkeit drin.
'Man kann auch die Proc Heute mit entsprechenden Parametern +1/-1 aufrufen.
'Sinnvoll wäre z. B., diese beiden Prozeduren in eine Headerdatei zu schreiben:
'MORGEN = Dt("getDate",0,dt("incDay",!now,1));
'GESTERN = Dt("getDate",0,dt("incDay",!now,-1));
'Aufruf dann mit: Print ~MORGEN
'Man könnte hier natürlich noch einen optionalen Parameter für das Ausgabeformat einbauen.
'Das hab ich aber aus Gründen der besseren Übersichtlichkeit gelassen.
Proc Heute
If %pcount = 1
Parameters i%
ElseIf %pcount = 2
Parameters Datum$,i%
Else
Var i% = 0
EndIf
Return Dt("getDate",0,dt("incDay",!now,i%))
EndProc
Proc DatumPlus
Parameters d%,m%,j%,d$
Declare Date!
If %pcount = 3
'wenn kein Datum angegeben wird, wird das "Heute" verwendet
date! = !now
ElseIf %pcount = 4
date! = Dt("setDate",d$)
EndIf
Date! = dt("incDay",date!,d%)
Date! = dt("incMonth",date!,m%)
Date! = dt("incYear",date!,j%)
Return Dt("getDate",0,Date!)
EndProc
Proc DatumIntervall
Parameters D$,I%,Anzahl%
Var date! = Dt("setDate",D$)
WhileLoop 1,Anzahl% * I%,I%
Print Dt("getDate",0,dt("incDay",date!,&Loop)),&loop
'hier wäre eine Ausgabe z. B. in die Listboxliste natürlich sinnvoller
'AddString Dt("getDate",0,dt("incDay",date!,d%))
Wend
EndProc
Print "Gestern war " + Gestern()
Print "Heute ist " + Heute()
Print "Morgen ist " + Morgen()
Print
Print "Vor 5 Tagen war der " + Heute(-5)
Print "In 50 Tagen ist der " + Heute(50)
Print
Print "In 10 Tagen, 6 Monaten und 12 Jahren ist der " + DatumPlus(10,6,12)
Print "Vor 10 Tagen, 6 Monaten und 12 Jahren war der " + DatumPlus(-10,-6,-12)
Print "und das geht auch mit einem beliebigen Datum: " + DatumPlus(1,-6,2,"02.05.1999")
Print
Print "Taste drücken"
WaitKey
Print
Print "Eine Liste mit 14-täglichen Terminen ab dem 15.5.2013"
DatumIntervall("15.5.2013",14,10)
WaitInput
WaitInput
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 07.03.2013 ▲ |
|
|
|
|
| Auf jeden Fall sinnvoll.
Wie ist das mit Datum->Zeitstempel? |
|
|
| |
|
|
|
Jörg Sellmeyer | Was genau meinst du mit Zeitstempel? Das hier:
gibt dir z. B. eine englische Ausgabe mit Offset zur UTC aus. Wenn du ein bestimmtes Ausgabeformat haben möchtest, gib mal ein Beispiel und ich bastel was zusammen. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 07.03.2013 ▲ |
|
|
|
|
| Ich meine den sog. Unix Timestamp: [...]
Also Anzahl vergangener Sekunden seit 01.01.1970 00:00.00 UTC.
In nProcs kann man einfach:
schreiben: [...] |
|
|
| |
|
|
|
Jörg Sellmeyer | Müsste ja im Prinzip sowas wie das hier sein:
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 07.03.2013 ▲ |
|
|
|