Alex,

i've posted already some info about how to use the time zone library in 
Livecode server in my comment to David's post "Aw: Basic question: Time Zone 
Library".

Here it is again and a little bit more detailed.

1. copy the folder com.livecode.library.timezone from the LC extensions folder 
to your webserver into a folder extensions. The extensions folder can be found 
in the App Bundle on macOS or in the windows program folder
e.g. C:\Program Files (x86)\RunRev\LiveCode Business 9.6.1

2. place your .lc script in the same folder where the extensions folder exists.

3. configure/set the path where the shared library for your server os is 
located (see line 3 in the sample script below)
4. load the extension module.lcm (see line 4 in the sample script below)

The following script uses the time zone library to output the available time 
zones

<?lc
put the folder into tBasePath
set the revLibraryMapping["tz"] to tBasePath 
&"/extensions/com.livecode.library.timezone/code/x86_64-linux/tz.so"
load extension from file tBasePath & 
"/extensions/com.livecode.library.timezone/module.lcm"
put timezones() into tTZ
replace return with "<br>" in tTZ
put tTZ
?>



-
Matthias Rebbe
Life Is Too Short For Boring Code

> Am 07.11.2020 um 13:57 schrieb Alex Tweedly via use-livecode 
> <[email protected]>:
> 
> Thanks Graham. That does indeed work - on your local system.
> 
> The issue I am trying to deal with (and maybe it's related to what David is 
> doing) is dealing with time zone issues on a LC web server. If you want to 
> timestamp when some event happens, you can do that as a UTC timestamp using a 
> function like this one of yours; but that leaves you two problems.
> 
>  - presenting those timestamps back to the user - which should be in *their* 
> local time
>  - allowing the user to provide their own timestamp - again should be local 
> for them.
> 
> Most advice I've found via Google, etc. suggests keeping the timestamps in 
> UTC, and asking the user to provide their timezone - usually when they 
> 'register'. You can then use PHP (or ...) functions to convert a date/time 
> between UTC and their local zone.
> 
> You might hope to do that in LC using 'convert .. to internet date' - but 
> that doesn't work because that conversion (seems to) assume a local time, and 
> then simply fill in the time offset for the local system (i.e. the problem 
> David reported).
> 
> You should be able to do it using the TimeZone library - but I haven't 
> figured out how to to do that, or I'm using it wrong, or something. (I didn't 
> know about the Timezone library until David mentioned it yesterday.)
> 
> I'm currently using an ugly (though working :-) workaround using e.g.
> 
> put "America/New_York" into timeZone
> 
> *put*shell("TZ=" & timeZone & " date") into tmp
> 
> and working it all out from there (assumes Unix server - don't know if it 
> works on others).
> 
> Alex.
> 
> 
> 
> On 07/11/2020 10:27, Graham Samuel via use-livecode wrote:
>> I am as confused as anyone else as to what you are trying to do, but just in 
>> case, this little function seems to work for me to get the ’standard’ UTC 
>> date format which I have to use in my app to put time stamps into GPX files. 
>> It apparently produces the correct time zone. Doubtless it could be more 
>> elegantly coded.
>> 
>> Hope it helps - who knows?
>> 
>> Graham
>> 
>> function fUTCTime
>>    local t1,t2,t3
>>    -- this gets the current time and puts it into UTC format, i.e 
>> YYYY-MM-DDThh:mm:ssTZD
>>    put word 5 to 6 of the internet date into t3 -- we are interested in the 
>> time and time zone
>>    put the long time into t1
>>    convert t1 to dateItems -- format is yyyy,m,d,h,m,s,day no.
>>    put (item 1 of t1) & "-" & f2digits(item 2 of t1) & "-" & f2digits(item 3 
>> of t1) &"T" & word 1 of t3 into t2
>>    put word 2 of t3 into t1 -- the time zone indication
>>    get char 1 of t1 — the code for 0 (zero) is Z, apparently
>>    if it <> "+" and it <> "-“ then
>>       put "Z" after t2
>>    else
>>       put t1 after t2
>>    end if
>>    return t2
>> end fUTCTime
>> 
>> function f2digits theNum
>> -- add a leading zero. We don't check if there are more than two digits
>>    if number of chars of theNum = 1 then
>>       return ("0" & theNum)
>>    else
>>       return theNum
>>    end if
>> end f2digits
>> 
>> 
>>> On 7 Nov 2020, at 01:34, Alex Tweedly via use-livecode 
>>> <[email protected]> wrote:
>>> 
>>> I don't think it "strips" the TZ info - it simply ignores it. I think the 
>>> key phrase is in the dictionary as :
>>> 
>>>> *Note:* The *convert* command assumes all dates / times are in local time 
>>>> except for 'the seconds', which is taken to be universal time.
>>>> 
>>> So it assume syou date is in local time (regardless of the +0300), and 
>>> therefore your example returns +0000 for you (I assume you're in the UK, or 
>>> equivalent,  now). It does the same for me, and returns the date with 
>>> "+0000".
>>> 
>>> However, the same code run on my LC server (wherever on-rev is these days), 
>>> changes the +0300 to -0500 - i.e. it's taken as local time where the server 
>>> is.
>>> 
>>> 
>>> I assume you should be able to do something with the TimeZone library - but 
>>> I'm struggling to figure that out.
>>> 
>>>>    local tNow
>>>>    put the seconds into tNow
>>>>    put FromUniversalTime(tNow,"US/Central") into tt
>>>>    put tNow && tt
>>>>    put FromUniversalTime(tNow,"US/Alaska") into tt
>>>>    put CR & tt after msg
>>> gives me
>>> 
>>> 1604709030 1604709030
>>> 
>>> 1604709030
>>> 
>>> so I don't have a clue  what it was trying to do !?!
>>> 
>>> Alex.
>>> 
>>> On 06/11/2020 21:28, David Bovill via use-livecode wrote:
>>>> Why does:
>>>> 
>>>> get "Fri, 06 Nov 2020 10:57:37 +0300"
>>>> convert it to internet date
>>>> put it
>>>> 
>>>> — give
>>>> "Fri, 06 Nov 2020 10:57:37 +0000"
>>>> 
>>>> Just seems to strip the timezone info?
>>>> On 30 Oct 2020, 21:29 +0000, How to use LiveCode 
>>>> <[email protected]>, wrote:
>>>>> ToUniversalTime
>>>> _______________________________________________
>>>> use-livecode mailing list
>>>> [email protected]
>>>> Please visit this url to subscribe, unsubscribe and manage your 
>>>> subscription preferences:
>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>> _______________________________________________
>>> use-livecode mailing list
>>> [email protected]
>>> Please visit this url to subscribe, unsubscribe and manage your 
>>> subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
>> _______________________________________________
>> use-livecode mailing list
>> [email protected]
>> Please visit this url to subscribe, unsubscribe and manage your subscription 
>> preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
> _______________________________________________
> use-livecode mailing list
> [email protected]
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode

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

Reply via email to