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
