This is nothing new, Xavier,
But surprise!
put (2485694 is a date)
It gets worse... 1 is also a date!
So either the << is a date>> function is useless as a date checker and we all must roll our own AGAIN
Virtually any integer represents a date in seconds format in xTalks; so if you need need to validate an input string as a valid date (as per system date format), you need more:
From Serendipity Library <http://wecode.org/serendipity/>:
function validDate theString -- 5 April 04:RCC
put stripBlanks(theString,false) into theString
get systemDateFormat()
set the itemDelimiter to char -1 of it -- theSeparator
if the number of items of theString <> 3 then return false
delete the last char of it
delete char offset("mm",it) of it -- remove double characters, if any
delete char offset("dd",it) of it
delete char offset("yy",it) of it
repeat with x = 1 to 3
switch char x of it
case "m"
put item x of theString into theMonth
if not validDigits(theMonth) then return false
if theMonth < 1 or theMonth > 12 then return false
break
case "d"
put item x of theString into theDay
if not validDigits(theDay) then return false
if theDay < 1 or theDay > 31 then return false
break
case "y"
put item x of theString into theYear
if not validDigits(theYear) then return false
put length(theYear) into charCount
if charCount <> 2 and charCount <> 4 then return false
if charCount is 2 then add 2000 to theYear
if theYear < 1 then return false
break
end switch
end repeat
if theDay < 29 then return true&return&theYear&comma&theMonth&comma&theDay&",0,0,0,0"
if theMonth is 2 then
if theDay > 29 or not leapYear(theYear) then return false
else return true&return&theYear&comma&theMonth&comma&theDay&",0,0,0,0"
else
if offset("0",theMonth) = 1 then delete char 1 of theMonth
set the itemDelimiter to comma
if theMonth is among the items of "1,3,5,7,8,10,12" then return true&return&theYear&comma&theMonth&comma&theDay&",0,0,0,0"
if theDay is 31 then return false
else return true&return&theYear&comma&theMonth&comma&theDay&",0,0,0,0"
end if
end validDate
Note this uses the systemDateFormat function I posted yesterday, plus other Library handlers.
Rob Cozens CCW Serendipity Software Company
"And I, which was two fooles, do so grow three; Who are a little wise, the best fooles bee."
from "The Triple Foole" by John Donne (1572-1631)
_______________________________________________ use-revolution mailing list [email protected] http://lists.runrev.com/mailman/listinfo/use-revolution
