ISO8601 - FM data and time conversions
ISO8601GetDate( isoDate )
Let (
[
_input_date = Filter ( GetValue ( Split ( isoDate; "T " ); 1 ); "0123456789 ");
_year = Left (_input_date;4 );
_month = Middle ( _input_date ; 5 ; 2 );
_day = Middle ( _input_date ; 7 ; 2 )
] ;
Date ( _month; _day; _year )
)
/*
by air.fsans@gmail.com 2022
dependencies:
Split(str, delim)
*/
ISO8601FormatDate( fmDate )
Case (
not IsEmpty ( fmDate ) ;
Year ( fmDate ) & "- " & Right ( "0 " & Month ( fmDate ) ; 2 ) & "- " & Right ( "0 " & Day ( fmDate ) ; 2 )
)
/*
by air.fsans@gmail.com 2022
*/
ISO8601ParseDate( isoDate )
Let (
[
yearString = Left ( isoDate ; 4 ) ;
dash1 = Middle ( isoDate ; 5 ; 1 ) ;
monthString = Middle ( isoDate ; 6 ; 2 ) ;
dash2 = Middle ( isoDate ; 8 ; 1 ) ;
dayString = Right ( isoDate ; 2 ) ;
yearNum = GetAsNumber ( yearString ) ;
monthNum = GetAsNumber ( monthString ) ;
dayNum = GetAsNumber ( dayString )
] ;
Case (
IsEmpty ( isoDate ) ;
"" ;
( Filter ( yearString ; "0123456789 " ) ≠ yearString or
Filter ( monthString ; "0123456789 " ) ≠ monthString or
Filter ( dayString ; "0123456789 " ) ≠ dayString or
dash1 ≠ "-" or
dash2 ≠ "-" or
monthNum < 1 or
monthNum > 12 or
dayNum < 1 or
dayNum > 31 ) ;
"?" ;
Date ( monthNum ; dayNum ; yearNum )
)
)
/*
by air.fsans@gmail.com 2022
*/