How to access System Preferences in JSL, specifically the date format setting
Jul 20, 2020 6:49 PM(295 views)
I've searched around and haven't found any simple way to get System Preferences settings from within JSL. I'm developing on a Mac – (JMP 14 & 15) – but would also like to know how to do this on Windows. The closest I got was a discussion on how to get the language code:
System Service( Get Language Code );
System Service sounds like and interesting function, but I couldn't find any documentation on it. I'm looking for a general solution but am immediately interested in finding the date format, (per setting in System Preferences ➔ Language & Region ➔ Advanced... ➔ Dates ➔ Short), as shown below:
The Short date delimiters are normally set to slashes by default, but were modified by me to dashes in the image above. The specific issue I find with changing this setting is that it affects what arguments are valid to the Input Format function. For example, the following statement will generate a runtime error:
col << Input Format( "y/m/d h:m:s" );
So the code must instead look like:
col << Input Format( "y-m-d h:m:s" );
And the reverse it true if the user has their System Preferences set to slashes. Furthermore, with the Format function, if the wrong date string is given, there won't be a runtime error, but the relevant datetime column will ignore the format setting, and the data will be left in its raw, unintelligible form.
Thus, the set of valid arguments are dependent on the user's setting, and the code must first read this setting to determine which format to use.
As a workaround, I was able to collect the settings information from a system Unix command and parse it accordingly:
However, this seems a bit clumsy, and I imagine there's a simpler way. It's apparent that the JMP engine can read this setting as it presents a very different set of time formats in the Column Properties dialog based on this setting, as shown below (presenting only the dash options here):
So, my question is: Is there a simple way to get arbitrary System Preferences values (and the date format specifically) by using System Service or some other function?