Domino Code Fragment

Code Name*
A very forgiving date parser. Let's you enter dates like Nov. 1, 1990
Date*
04/28/2024
Source (or email address if you prefer)*
Rlatulippe@romac.com
IP address:.3.145.178.106
Description*
A very forgiving date parser. Let's you enter dates like Nov. 1, 1990
Type*
Formula
Categories*
(Misc)
Implementation:
Required Client:
Server:
Limitations:
Comments:
Files/Graphics attachments (if applicable): Code:
REM "This should be a formula for a date/time field and be computed.";
REM "input_field is a text field on the same form";
REM "If input_field is blank by default, this formula yields @ERROR when the document is open.";
REM "If it only finds two "words" e.g. Nov. 90 or 12/12 it tries to decide whether you meant a";
REM "year or a day. The error checking is weak , but @Date will only take legal ones ...";
tmp := @Replace(@LowerCase(input_field); "," : "." : "-" : "/"; " ");
list1 := @Implode(@Explode(tmp; "-"));
list := @Implode(@Explode(list1; "/"));
month := @Word(list; " "; 1);
day := @TextToNumber(@Word(list; " "; 2));
w3 := @Word(list; " "; 3);
y1 := @If(w3 = ""; @Year(@Today); @TextToNumber(w3));
y2 := @If(y1 < 100; y1 + 1900; y1);
month_table := @Explode("jan feb mar apr may jun jul aug sep oct nov dec");
m := @If(@Matches(month; "*{a-z}*");
@Member(@Left(month; 3); month_table); @TextToNumber(month));
y := @If(w3 = "" & day > 31; @If(day < 100; day + 1900; day); y2);
d := @If(w3 = "" & day > 31; 1; day);
@If(d > 31 | d < 1 | m < 1 | m > 12 | y < 1; @ERROR; @Date(y; m; d))