I came across the need for it, so i wrote the function, english version only.
To my surprise, it is faster than the original one.
Testing code included.
Code: Select all
REM test......................................
INSTALL @lib$+"datelib"
D%=FN_today
PRINT FN_date$(D%,"d")
PRINT FN_date$(D%,"dd")
PRINT FN_date$(D%,"ddd")
PRINT FN_date$(D%,"dddd")
PRINT FN_date$(D%,"M")
PRINT FN_date$(D%,"MM")
PRINT FN_date$(D%,"MMM")
PRINT FN_date$(D%,"MMMM")
PRINT FN_date$(D%,"y")
PRINT FN_date$(D%,"yy")
PRINT FN_date$(D%,"yyyy")
PRINT FN_date$(D%,"ddd dd MMM yyyy")
PRINT FN_date$(D%,"dddd dd MMMM yyyy")
PRINT FN_date$(D%,"yyyy ddd dd MMM")
PRINT FN_date$(D%,"yyyy dddd dd MMMM")
PRINT FN_date$(D%,"dddddMMMyyyy")
PRINT FN_date$(D%,"ddddddMMMMyyyy")
PRINT FN_date$(D%,"yyyyMMdd")
PRINT FN_date$(D%,"yyyyddMM")
PRINT FN_date$(D%,"ddyyyyMM")
PRINT FN_date$(D%,"dyyM")
PRINT FN_date$(D%,"dMyy")
PRINT TIME$
END
REM test......................................
REM Return a formatted date string
DEF FN_date$(M%,f$)
LOCAL r$,day$(),month$(),b$,N%
DIM day$(6),month$(12)
day$()="Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"
month$()=" ","January","February","Mars","April","May","June","July","August","September","October","November","December"
REPEAT
CASE LEFT$(f$,4) OF
WHEN "dddd" : r$+=day$(FN_dow(M%)) : N%=5
WHEN "MMMM" : r$+=month$(FN_month(M%)) : N%=5
WHEN "yyyy" : r$+=STR$(FN_year(M%)) : N%=5
OTHERWISE
CASE LEFT$(f$,3) OF
WHEN "ddd" : r$+=LEFT$(day$(FN_dow(M%)),3) : N%=4
WHEN "MMM" : r$+=LEFT$(month$(FN_month(M%)),3) : N%=4
OTHERWISE
CASE LEFT$(f$,2) OF
WHEN "dd" : r$+=RIGHT$("0"+STR$(FN_day(M%)),2) : N%=3
WHEN "MM" : r$+=RIGHT$("0"+STR$(FN_month(M%)),2) : N%=3
WHEN "yy" : r$+=RIGHT$(STR$(FN_year(M%)),2) : N%=3
OTHERWISE
CASE LEFT$(f$,1) OF
WHEN " " : r$+=" " : N%=2
WHEN "d" : r$+=STR$(FN_day(M%)) : N%=2
WHEN "M" : r$+=STR$(FN_month(M%)) : N%=2
WHEN "y" : b$=RIGHT$(STR$(FN_year(M%)),2) : N%=2
IF ASC(b$)=ASC("0") THEN r$+=RIGHT$(b$) ELSE r$=r$+b$
ENDCASE
ENDCASE
ENDCASE
ENDCASE
f$=MID$(f$,N%)
UNTIL f$=""
=r$