On 14/07/2023 19:45, Bob Sneidar via use-livecode wrote:
Because I’m not that good with regular expressions and the format function. :-) 
But you example has one too many close parens.

Oops - I got caught out copying / pasting again :-(

Yes, of course it should have been

put format("%s-%02d-%02d", item 1 of theDate, item 2 of theDate, \
     item 3 of theDate) into theDate

Also, for SQL Date I do not thing UK or US matters. It’s YYYY-MM-DD everywhere, 
isn’t it?
Yes, sql (or ISO) is same everywhere.

Also, I assumed that the localization of the LC engine would take into account 
the local date format for the built in date functions. Is that incorrect?

That is correct, but there is kind of a problem (or at least limitation) with the function.

If I have a user here (UK) type a date into a field, and then I try to format it to SQLdate (or anything else) using this function, it will fail. My user will type something  (15/07/2023), and that gets an "invalid date" error.

I'm not sure there is anything you can do that is completely safe - you can't tell whether a /-separated date string is US or UK. But I'd argue that dates ready to pass in to the function are either internally-generated (so they'll be sql, or dateitems, or otherwise unambiguous), or they are user-generated (and hence local format).  And therefore I would suggest changing the code to

       put item 2 of theDate & "/" & \
          item 3 of theDate & "/" & \
          item 1 of theDate into theDate
       convert theDate to dateitems
    ELSE
       convert theDate from system date to dateitems
    END IF
-- replace "." with "/" in theDate
    -- convert theDate to dateitems

Alex.


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to