Zulässige Formatierungskennungen sind YYYY bzw. YY für Jahr, MM für Monat, DD für Tag, hh für Stunde, mm für Minute, ss für Sekunde. Wird bspw. als Format die folgende Zeichenkette übergeben: Invoice-Spar-DD.MM.YYYY.edi wird daraus: Invoice-Spar-22.10.2008.edi
Die Zeichenkette: Invoice-Spar-YYYY.MM.DD_hh.mm.ss.edi wird zu: Invoice-Spar-2005.10.22_07.45.56.edi
Hier nun der Code:
FUNCTION FormatDTStamp
LPARAMETERS vFormat as String
LOCAL lcJahr as String, lcMonat as String, lcTag as String, ;
lcStunde as String, lcMinute as String, lcSekunde as String, ;
lcStamp as String
lcJahr = PADL(YEAR(DATE()),4,[0])
lcMonat = PADL(MONTH(DATE()),2,[0])
lcTag = PADL(DAY(DATE()),2,[0])
lcStunde = PADL(HOUR(DATETIME()),2,[0])
lcMinute = PADL(MINUTE(DATETIME()),2,[0])
lcSekunde = PADL(SEC(DATETIME()),2,[0])
lcStamp = m.vFormat
DO CASE
CASE OCCURS([YYYY],lcStamp) > 0
lcStamp = STRTRAN(lcStamp,[YYYY],lcJahr)
CASE OCCURS([YY],lcStamp) > 0
lcStamp = STRTRAN(lcStamp,[YY],RIGHT(lcJahr,2))
ENDCASE
lcStamp = STRTRAN(lcStamp,[MM],lcMonat)
lcStamp = STRTRAN(lcStamp,[DD],lcTag)
lcStamp = STRTRAN(lcStamp,[hh],lcStunde)
lcStamp = STRTRAN(lcStamp,[mm],lcMinute)
lcStamp = STRTRAN(lcStamp,[ss],lcSekunde)
RETURN lcStamp
ENDFUNC
Die Funktion kann um beliebige weitere Platzhalter ergänzt werden. Denkbar wäre eine textuelle Darstellung von Monat und Tag durch eine dreistellige Platzhalterdefinition (Jan,Feb,Mär,... -> MMM bzw. Mon,Die,Mit,... -> DDD).
Eine solche Umsetzung unterstützt VFP mit den beiden Funktionen CMONTH() und CDOW().
Keine Kommentare:
Kommentar veröffentlichen