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
<use-livecode@lists.runrev.com> 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
<use-livecode@lists.runrev.com>, wrote:
ToUniversalTime
_______________________________________________
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
_______________________________________________
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
_______________________________________________
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
_______________________________________________
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