Re: Is the DateFormat read only?

2021-01-31 Thread Niggemann, Bernd via use-livecode
Alex Tweedly via 
use-livecode
 Sat, 07 Nov 2020 07:29:15 
-0800

I tested out the TimeZone library with a couple of randomly chosen timezones - 
and they all came back incorrect (i.e. unchanged from UTC even though the 
timezones should have been different). I know that if you pass in a timezone 
that is not in the local machine's database, it will silently return the UTC 
value - but that's not the case here.

I've now looked at it more closely - some of these timezones give the right 
answer, some give the wrong answer - though they are all in the TimeZones() 
list.


Alex,

After you mentioned the problems with the timezone library I had a look and it 
turns out that some of the timezones on the TimeZones() list are deprecated and 
they resolve to UTZ.
I forgot to post that I bug reported the problem in case anyone runs into it.

https://quality.livecode.com/show_bug.cgi?id=23012

Kind regards
Bernd


___
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


Re: Is the DateFormat read only?

2020-11-09 Thread Bob Sneidar via use-livecode
Your code contains a smart quote and an em dash. This works:

function fUTCTime
   local t1,t2,t3
   -- this gets the current time and puts it into UTC format, i.e 
-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 ,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

Bob S

> On Nov 7, 2020, at 02:27 , Graham Samuel via use-livecode 
>  wrote:
> 
> function fUTCTime
>   local t1,t2,t3
>   -- this gets the current time and puts it into UTC format, i.e 
> -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 ,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 
>>  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 + for you (I assume you're in the UK, or 
>> equivalent,  now). It does the same for me, and returns the date with 
>> "+".
>> 
>> 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 +"
>>> 
>>> Just seems to strip the timezone info?
>>> On 30 Oct 2020, 21:29 +, How to use LiveCode 
>>> , 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


Re: Is the DateFormat read only?

2020-11-08 Thread Ben Rubinstein via use-livecode
This enhancement request (which from various paths has a 14 year history) is 
still relevant IMHO:


https://quality.livecode.com/show_bug.cgi?id=4636

(It also has a handy suggestion from Mark Waddingham of a function to return 
"ISO date time" (as the discussions in the report shows, a misnomer), complete 
with presumed correct time zone.)


On 30/10/2020 21:28, J. Landman Gay via use-livecode wrote:
Good point. For our situation, hours were enough so I guess I ignored the rest 
(it was a long time ago and the code is old.)


On 10/30/20 3:24 PM, Alex Tweedly via use-livecode wrote:
But that will only work for those time zones whose variation from UTC is an 
exact number of hours.


the internet date has 4 digits so that it can handle hour and minute 
variations - you could change


   subtract (char 1 to -3 of last word of the internet date) from item 4 of 
tTime


to

   put the last word of the internet time into tmp
   subtract (char 1 to -3 of tmp) from item 4 of tTime
   subtract (char 1 of tmp & char -2 to -1 of tmp) ) from item 5 of tTime

and then you would be handling all cases correctly.

Alex.

On 30/10/2020 20:06, J. Landman Gay via use-livecode wrote:

On 10/29/20 4:33 PM, Graham Samuel via use-livecode wrote:
The only souci with this format is that it gives the month in alpha, 
presumably according to the nationality of the OS. But it’s easy to get 
the numeric month in other ways. Still, it is just a little bit fiddly to 
create a full UTC date of the format:


-MM-DDThh:mm:ssTZD


Here's something I use:

  put the seconds into tTime
  convert tTime to dateitems
  subtract (char 1 to -3 of last word of the internet date) from item 4 of 
tTime

  convert tTime to dateitems
  set the numberformat to "00"
  put item 1 of tTime &"-"& (item 2 of tTime)+0 &"-"& (item 3 of tTime)+0 & 
"T" & (item 4 of tTime)+0 &":"& \

    (item 5 of tTime)+0 &":"& (item 6 of tTime)+0 & "Z" into tTimestamp



___
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


Re: Is the DateFormat read only?

2020-11-07 Thread David Bovill via use-livecode
Looks like a bug to me. So I’d say yes?

I’m pretty puzzled why convert does not work with internet date. It seems a bit 
of a waste to make the internet date a format that you can only display and not 
 manipulate? Tests here indicate that converting an internet date to seconds 
makes no difference with regard to the time zone bit you include - to 
illustrate here is a function that I had to make to convert internet dates:
function date_GetInternetSeconds iDate
    put word -1 of iDate into iDateOffset
    convert iDate to seconds -- this ignores the last "+0050" 
iDateOffset bit
    _AddInternetDateOffset iDate, iDateOffset
    return iDate
end date_GetInternetSeconds

private command _AddInternetDateOffset @dateInSeconds, iDateOffset
    put char 2 to 3 of iDateOffset into sHours
    put char 4 to 5 of iDateOffset into sMin
    --
    if char 1 of iDateOffset = "+"then
            add sHours * 60*60 to dateInSeconds
            add sMin * 60 to dateInSeconds
        else
            subtract sHours * 60*60 from dateInSeconds
            subtract sMin * 60 from dateInSeconds
    end if
end_AddInternetDateOffset

Does this really make sense?
On 7 Nov 2020, 14:37 +, matthias rebbe via use-livecode 
, wrote:
> 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
>
>  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 "" 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 
> > :
> >
> > 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, 

Re: Is the DateFormat read only?

2020-11-07 Thread Alex Tweedly via use-livecode
Thank you Matthias. Those detailed instructions will come in handy for 
me - when/if I get that far.


The problem I mentioned a couple of emails ago in this thread was in the 
IDE - haven\t yet got as far as doing it on the server.


I tested out the TimeZone library with a couple of randomly chosen 
timezones - and they all came back incorrect (i.e. unchanged from UTC 
even though the timezones should have been different). I know that if 
you pass in a timezone that is not in the local machine's database, it 
will silently return the UTC value - but that's not the case here.


I've now looked at it more closely - some of these timezones give the 
right answer, some give the wrong answer - though they are all in the 
TimeZones() list.


All on my MacBook Pro, OSX 10.13.6, LC 9.6 ...


   local tTimeZones, tAllTheTimeZones
   put timezones() into tAllTheTimeZones
   put "UTC" & CR after tTimeZones
   put "America/New_York" & CR after tTimeZones
   put "America/Anchorage" & CR after tTimeZones
   put "junktotest" & CR after tTimeZones
   put "US/Central" & CR after tTimeZones
   put "US/Alaska" & CR after tTimeZones

   repeat for each line L in tTimeZones
  if L is among the lines of tAllTheTimeZones then
 put L && FromUniversalTime(the seconds,L)  after msg
  else
 put L && "is not in the database"  after msg
  end if
   end repeat

gives


UTC 1604762435
America/New_York 1604744435
America/Anchorage 1604730035
junktotest is not in the database
US/Central 1604762435
US/Alaska 1604762435

Note the last two (which happened to be the ones I chose in my earlier 
test) wrongly show the UTC time, though they are clearly in the 
TimeZones() list.


Maybe just a bug and I should report it ?

Alex

On 07/11/2020 14:36, matthias rebbe via use-livecode wrote:

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

" 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 
:

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 
-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 

Re: Is the DateFormat read only?

2020-11-07 Thread matthias rebbe via use-livecode
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

" 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 
> :
> 
> 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 
>> -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 ,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 
>>>  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 + for you (I assume you're in the UK, or 
>>> equivalent,  now). It does the same for me, and returns the date with 
>>> "+".
>>> 
>>> 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 

Re: Is the DateFormat read only?

2020-11-07 Thread Alex Tweedly via use-livecode

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 
-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 ,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 
 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 + for you (I assume you're in the UK, or equivalent,  now). It does 
the same for me, and returns the date with "+".

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 +"

Just seems to strip the timezone info?
On 30 Oct 2020, 21:29 +, How to use LiveCode 
, 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:

Re: Is the DateFormat read only?

2020-11-07 Thread Graham Samuel via use-livecode
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 
-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 ,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 
>  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 + for you (I assume you're in the UK, or 
> equivalent,  now). It does the same for me, and returns the date with "+".
> 
> 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 +"
>> 
>> Just seems to strip the timezone info?
>> On 30 Oct 2020, 21:29 +, How to use LiveCode 
>> , 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


Re: Is the DateFormat read only?

2020-11-06 Thread Alex Tweedly via use-livecode
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 + for you (I assume you're in the UK, 
or equivalent,  now). It does the same for me, and returns the date with 
"+".


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 +"

Just seems to strip the timezone info?
On 30 Oct 2020, 21:29 +, How to use LiveCode 
, 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


Re: Is the DateFormat read only?

2020-11-06 Thread David Bovill via use-livecode
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 +"

Just seems to strip the timezone info?
On 30 Oct 2020, 21:29 +, How to use LiveCode 
, 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


Re: Is the DateFormat read only?

2020-10-30 Thread J. Landman Gay via use-livecode
Good point. For our situation, hours were enough so I guess I ignored the rest (it was a long 
time ago and the code is old.)


On 10/30/20 3:24 PM, Alex Tweedly via use-livecode wrote:

But that will only work for those time zones whose variation from UTC is an 
exact number of hours.

the internet date has 4 digits so that it can handle hour and minute variations 
- you could change

   subtract (char 1 to -3 of last word of the internet date) from item 4 of 
tTime

to

   put the last word of the internet time into tmp
   subtract (char 1 to -3 of tmp) from item 4 of tTime
   subtract (char 1 of tmp & char -2 to -1 of tmp) ) from item 5 of tTime

and then you would be handling all cases correctly.

Alex.

On 30/10/2020 20:06, J. Landman Gay via use-livecode wrote:

On 10/29/20 4:33 PM, Graham Samuel via use-livecode wrote:
The only souci with this format is that it gives the month in alpha, presumably according to 
the nationality of the OS. But it’s easy to get the numeric month in other ways. Still, it 
is just a little bit fiddly to create a full UTC date of the format:


-MM-DDThh:mm:ssTZD


Here's something I use:

  put the seconds into tTime
  convert tTime to dateitems
  subtract (char 1 to -3 of last word of the internet date) from item 4 of tTime
  convert tTime to dateitems
  set the numberformat to "00"
  put item 1 of tTime &"-"& (item 2 of tTime)+0 &"-"& (item 3 of tTime)+0 & "T" & (item 4 of 
tTime)+0 &":"& \

    (item 5 of tTime)+0 &":"& (item 6 of tTime)+0 & "Z" into tTimestamp



___
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



--
Jacqueline Landman Gay | jac...@hyperactivesw.com
HyperActive Software   | http://www.hyperactivesw.com


___
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


Re: Is the DateFormat read only?

2020-10-30 Thread Alex Tweedly via use-livecode
But that will only work for those time zones whose variation from UTC is 
an exact number of hours.


the internet date has 4 digits so that it can handle hour and minute 
variations - you could change


  subtract (char 1 to -3 of last word of the internet date) from item 4 
of tTime


to

  put the last word of the internet time into tmp
  subtract (char 1 to -3 of tmp) from item 4 of tTime
  subtract (char 1 of tmp & char -2 to -1 of tmp) ) from item 5 of tTime

and then you would be handling all cases correctly.

Alex.

On 30/10/2020 20:06, J. Landman Gay via use-livecode wrote:

On 10/29/20 4:33 PM, Graham Samuel via use-livecode wrote:
The only souci with this format is that it gives the month in alpha, 
presumably according to the nationality of the OS. But it’s easy to 
get the numeric month in other ways. Still, it is just a little bit 
fiddly to create a full UTC date of the format:


-MM-DDThh:mm:ssTZD


Here's something I use:

  put the seconds into tTime
  convert tTime to dateitems
  subtract (char 1 to -3 of last word of the internet date) from item 
4 of tTime

  convert tTime to dateitems
  set the numberformat to "00"
  put item 1 of tTime &"-"& (item 2 of tTime)+0 &"-"& (item 3 of 
tTime)+0 & "T" & (item 4 of tTime)+0 &":"& \
    (item 5 of tTime)+0 &":"& (item 6 of tTime)+0 & "Z" into 
tTimestamp




___
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


Re: Is the DateFormat read only?

2020-10-30 Thread J. Landman Gay via use-livecode

On 10/29/20 4:33 PM, Graham Samuel via use-livecode wrote:

The only souci with this format is that it gives the month in alpha, presumably 
according to the nationality of the OS. But it’s easy to get the numeric month 
in other ways. Still, it is just a little bit fiddly to create a full UTC date 
of the format:

-MM-DDThh:mm:ssTZD


Here's something I use:

  put the seconds into tTime
  convert tTime to dateitems
  subtract (char 1 to -3 of last word of the internet date) from item 4 of tTime
  convert tTime to dateitems
  set the numberformat to "00"
  put item 1 of tTime &"-"& (item 2 of tTime)+0 &"-"& (item 3 of tTime)+0 & "T" & (item 4 of 
tTime)+0 &":"& \

(item 5 of tTime)+0 &":"& (item 6 of tTime)+0 & "Z" into tTimestamp

--
Jacqueline Landman Gay | jac...@hyperactivesw.com
HyperActive Software   | http://www.hyperactivesw.com


___
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


Re: Is the DateFormat read only?

2020-10-30 Thread Bob Sneidar via use-livecode
I have a formatDate() function (not to be confused with dateFormat) that has a 
few extra formats, one I call sql date for instance which is -mm-dd (and 
another function for time so I can produce a datetime compatible for SQL 
databases). 

I suppose it can be expanded for other formats, but when it comes to time 
zones, everything gets very complicated. Someone posted an article years ago as 
to why calculating current date and time in any given location is so 
complicated, and it has mostly to do with local standards. There are so many 
special cases, it really takes a centrally managed database to keep track of it 
all. 

Bob S


> On Oct 29, 2020, at 14:33 , Graham Samuel via use-livecode 
>  wrote:
> 
> Jacque
> 
> Right as usual. I had forgotten about the internet date, if I ever knew. I 
> suppose somewhere there is a little essay about all this but if so it is 
> buried in the LC documentation.
> 
> The only souci with this format is that it gives the month in alpha, 
> presumably according to the nationality of the OS. But it’s easy to get the 
> numeric month in other ways. Still, it is just a little bit fiddly to create 
> a full UTC date of the format:
> 
> -MM-DDThh:mm:ssTZD
> 
> Works OK now, just slightly more lines of code than I would have guessed.
> 
> Thanks (again).
> 
> Graham

___
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


Re: Is the DateFormat read only?

2020-10-29 Thread Graham Samuel via use-livecode
Jacque

Right as usual. I had forgotten about the internet date, if I ever knew. I 
suppose somewhere there is a little essay about all this but if so it is buried 
in the LC documentation.

The only souci with this format is that it gives the month in alpha, presumably 
according to the nationality of the OS. But it’s easy to get the numeric month 
in other ways. Still, it is just a little bit fiddly to create a full UTC date 
of the format:

-MM-DDThh:mm:ssTZD

Works OK now, just slightly more lines of code than I would have guessed.

Thanks (again).

Graham

> On 29 Oct 2020, at 18:15, J. Landman Gay via use-livecode 
>  wrote:
> 
> You can get the time zone, or at least the zone offset, by using "the 
> internet date".
> 
> --
> Jacqueline Landman Gay | jac...@hyperactivesw.com
> HyperActive Software | http://www.hyperactivesw.com
> On October 29, 2020 8:21:46 AM Graham Samuel via use-livecode 
>  wrote:
> 
>> I understand it, but the Dictionary is misleading and in one case actually 
>> wrong: when it says the ’time’ form gives the seconds - it doesn’t. You need 
>> to use the ‘long time’, at least so it seems to me. I have submitted a bug 
>> report.
>> 
>> I also thought that I could use the ToUniversalTime function, but that 
>> assumes you already know the time zone. Although LC has a Time Zone library, 
>> I haven’t found any documentation explaining how an app can find out which 
>> Time Zone it’s actually in. In fact my app doesn’t care that much, so will 
>> stick to UTC.
>> 
>> The documentation around all this needs a bit of tidying up, IMHO.
>> 
>> Graham
>> 
>>> On 29 Oct 2020, at 12:07, Tore Nilsen via use-livecode 
>>>  wrote:
>>> 
>>> If you only use a date and  convert it, dateItems will assume the time to 
>>> be midnight on that particular date.
>>> 
>>> Tore
>>> 
 29. okt. 2020 kl. 12:04 skrev Graham Samuel via use-livecode 
 :
 
 Just FYI, I think the dictionary is wrong or misleading in respect of what 
 the dateItems does. If you script this in the LC Message Box:
 
 put the date into t1
 convert t1 to dateItems
 put t1
 
 You get, e.g.
 2020,10,29,0,0,0,5
 
 
 but if you script
 
 put the english time into t1
 convert t1 to dateItems
 put t1
 
 You get e.g.
 2020,10,29,11,40,0,5
 
 i.e if you specify the date, you only get the date; but if you specify the 
 time, you get the date thrown in. I could not deduce this from the 
 Dictionary, but maybe I am just poor at reading what it says.
 
 Graham
 
> On 29 Oct 2020, at 09:29, Graham Samuel via use-livecode 
>  wrote:
> 
> Thanks Tore - I had forgotten the existence of dateItems. That of course 
> will do the trick. BTW I was trying to create dates in standard UTC 
> format, and now I can.
> 
> Graham
> 
>> On 28 Oct 2020, at 23:18, Tore Nilsen via use-livecode 
>>  wrote:
>> 
>> You can convert any given date to dateItems. Then you can use dateItems 
>> to present the date in any format you like. A date converted to 
>> dateItems will give you the following list of items:
>> 
>> the year
>> the month number
>> the day of the month
>> the hour in 24-hour time
>> the minute
>> the second
>> the numeric day of the week where Sunday is day 1, Monday is day 2, and 
>> so forth
>> All according to the Dictionary.
>> 
>> To be sure that any valid date format is recognized as a date when you 
>> read in the date you will like to convert, it is best to ask for the 
>> system date or set the useSystemDate to true, as this will make all 
>> valid date formats convert to dateItems.
>> 
>> Best regards
>> Tore Nilsen
>>> 28. okt. 2020 kl. 22:58 skrev Graham Samuel via use-livecode 
>>> :
>>> 
>>> A quick test seems to show that the DateFormat can’t be changed by a 
>>> ‘set’ command.
>>> 
>>> How then can I force a date to be in a given format? I’m really 
>>> thinking of the difference between US and European dates, i.e
>>> 
>>> d/m/y versus m/d/y
>>> 
>>> Obviously for some types of use, an LC program should be able to force 
>>> the format for consistency’s sake, regardless of where in the world 
>>> it’s being run.
>>> 
>>> Can it be done?
>>> 
>>> Graham
>>> ___
>>> 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:
>> 

Re: Is the DateFormat read only?

2020-10-29 Thread Bob Sneidar via use-livecode
I believe that when you convert a pure time to dateitems it assumes the current 
date. The date has no time component so it assumes midnight of the current 
date. 

Bob S


> On Oct 29, 2020, at 04:04 , Graham Samuel via use-livecode 
>  wrote:
> 
> Just FYI, I think the dictionary is wrong or misleading in respect of what 
> the dateItems does. If you script this in the LC Message Box:
> 
> put the date into t1
> convert t1 to dateItems
> put t1
> 
> You get, e.g.
> 2020,10,29,0,0,0,5
> 
> 
> but if you script
> 
> put the english time into t1
> convert t1 to dateItems
> put t1
> 
> You get e.g.
> 2020,10,29,11,40,0,5
> 
> i.e if you specify the date, you only get the date; but if you specify the 
> time, you get the date thrown in. I could not deduce this from the 
> Dictionary, but maybe I am just poor at reading what it says.
> 
> Graham
> 
>> On 29 Oct 2020, at 09:29, Graham Samuel via use-livecode 
>>  wrote:
>> 
>> Thanks Tore - I had forgotten the existence of dateItems. That of course 
>> will do the trick. BTW I was trying to create dates in standard UTC format, 
>> and now I can.
>> 
>> Graham
>> 
>>> On 28 Oct 2020, at 23:18, Tore Nilsen via use-livecode 
>>>  wrote:
>>> 
>>> You can convert any given date to dateItems. Then you can use dateItems to 
>>> present the date in any format you like. A date converted to dateItems will 
>>> give you the following list of items: 
>>> 
>>> the year
>>> the month number
>>> the day of the month
>>> the hour in 24-hour time
>>> the minute
>>> the second
>>> the numeric day of the week where Sunday is day 1, Monday is day 2, and so 
>>> forth
>>> All according to the Dictionary.
>>> 
>>> To be sure that any valid date format is recognized as a date when you read 
>>> in the date you will like to convert, it is best to ask for the system date 
>>> or set the useSystemDate to true, as this will make all valid date formats 
>>> convert to dateItems.
>>> 
>>> Best regards
>>> Tore Nilsen
 28. okt. 2020 kl. 22:58 skrev Graham Samuel via use-livecode 
 :
 
 A quick test seems to show that the DateFormat can’t be changed by a ‘set’ 
 command.
 
 How then can I force a date to be in a given format? I’m really thinking 
 of the difference between US and European dates, i.e
 
 d/m/y versus m/d/y
 
 Obviously for some types of use, an LC program should be able to force the 
 format for consistency’s sake, regardless of where in the world it’s being 
 run.
 
 Can it be done?
 
 Graham
 ___
 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

___
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


Re: Is the DateFormat read only?

2020-10-29 Thread J. Landman Gay via use-livecode
You can get the time zone, or at least the zone offset, by using "the 
internet date".


--
Jacqueline Landman Gay | jac...@hyperactivesw.com
HyperActive Software | http://www.hyperactivesw.com
On October 29, 2020 8:21:46 AM Graham Samuel via use-livecode 
 wrote:


I understand it, but the Dictionary is misleading and in one case actually 
wrong: when it says the ’time’ form gives the seconds - it doesn’t. You 
need to use the ‘long time’, at least so it seems to me. I have submitted a 
bug report.


I also thought that I could use the ToUniversalTime function, but that 
assumes you already know the time zone. Although LC has a Time Zone 
library, I haven’t found any documentation explaining how an app can find 
out which Time Zone it’s actually in. In fact my app doesn’t care that 
much, so will stick to UTC.


The documentation around all this needs a bit of tidying up, IMHO.

Graham

On 29 Oct 2020, at 12:07, Tore Nilsen via use-livecode 
 wrote:


If you only use a date and  convert it, dateItems will assume the time to 
be midnight on that particular date.


Tore

29. okt. 2020 kl. 12:04 skrev Graham Samuel via use-livecode 
:


Just FYI, I think the dictionary is wrong or misleading in respect of what 
the dateItems does. If you script this in the LC Message Box:


put the date into t1
convert t1 to dateItems
put t1

You get, e.g.
2020,10,29,0,0,0,5


but if you script

put the english time into t1
convert t1 to dateItems
put t1

You get e.g.
2020,10,29,11,40,0,5

i.e if you specify the date, you only get the date; but if you specify the 
time, you get the date thrown in. I could not deduce this from the 
Dictionary, but maybe I am just poor at reading what it says.


Graham

On 29 Oct 2020, at 09:29, Graham Samuel via use-livecode 
 wrote:


Thanks Tore - I had forgotten the existence of dateItems. That of course 
will do the trick. BTW I was trying to create dates in standard UTC format, 
and now I can.


Graham

On 28 Oct 2020, at 23:18, Tore Nilsen via use-livecode 
 wrote:


You can convert any given date to dateItems. Then you can use dateItems to 
present the date in any format you like. A date converted to dateItems will 
give you the following list of items:


the year
the month number
the day of the month
the hour in 24-hour time
the minute
the second
the numeric day of the week where Sunday is day 1, Monday is day 2, and so 
forth

All according to the Dictionary.

To be sure that any valid date format is recognized as a date when you read 
in the date you will like to convert, it is best to ask for the system date 
or set the useSystemDate to true, as this will make all valid date formats 
convert to dateItems.


Best regards
Tore Nilsen
28. okt. 2020 kl. 22:58 skrev Graham Samuel via use-livecode 
:


A quick test seems to show that the DateFormat can’t be changed by a ‘set’ 
command.


How then can I force a date to be in a given format? I’m really thinking of 
the difference between US and European dates, i.e


d/m/y versus m/d/y

Obviously for some types of use, an LC program should be able to force the 
format for consistency’s sake, regardless of where in the world it’s being run.


Can it be done?

Graham
___
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



___
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


Re: Is the DateFormat read only?

2020-10-29 Thread Graham Samuel via use-livecode
I understand it, but the Dictionary is misleading and in one case actually 
wrong: when it says the ’time’ form gives the seconds - it doesn’t. You need to 
use the ‘long time’, at least so it seems to me. I have submitted a bug report.

I also thought that I could use the ToUniversalTime function, but that assumes 
you already know the time zone. Although LC has a Time Zone library, I haven’t 
found any documentation explaining how an app can find out which Time Zone it’s 
actually in. In fact my app doesn’t care that much, so will stick to UTC.

The documentation around all this needs a bit of tidying up, IMHO.

Graham

> On 29 Oct 2020, at 12:07, Tore Nilsen via use-livecode 
>  wrote:
> 
> If you only use a date and  convert it, dateItems will assume the time to be 
> midnight on that particular date.
> 
> Tore
> 
>> 29. okt. 2020 kl. 12:04 skrev Graham Samuel via use-livecode 
>> :
>> 
>> Just FYI, I think the dictionary is wrong or misleading in respect of what 
>> the dateItems does. If you script this in the LC Message Box:
>> 
>> put the date into t1
>> convert t1 to dateItems
>> put t1
>> 
>> You get, e.g.
>> 2020,10,29,0,0,0,5
>> 
>> 
>> but if you script
>> 
>> put the english time into t1
>> convert t1 to dateItems
>> put t1
>> 
>> You get e.g.
>> 2020,10,29,11,40,0,5
>> 
>> i.e if you specify the date, you only get the date; but if you specify the 
>> time, you get the date thrown in. I could not deduce this from the 
>> Dictionary, but maybe I am just poor at reading what it says.
>> 
>> Graham
>> 
>>> On 29 Oct 2020, at 09:29, Graham Samuel via use-livecode 
>>>  wrote:
>>> 
>>> Thanks Tore - I had forgotten the existence of dateItems. That of course 
>>> will do the trick. BTW I was trying to create dates in standard UTC format, 
>>> and now I can.
>>> 
>>> Graham
>>> 
 On 28 Oct 2020, at 23:18, Tore Nilsen via use-livecode 
  wrote:
 
 You can convert any given date to dateItems. Then you can use dateItems to 
 present the date in any format you like. A date converted to dateItems 
 will give you the following list of items: 
 
 the year
 the month number
 the day of the month
 the hour in 24-hour time
 the minute
 the second
 the numeric day of the week where Sunday is day 1, Monday is day 2, and so 
 forth
 All according to the Dictionary.
 
 To be sure that any valid date format is recognized as a date when you 
 read in the date you will like to convert, it is best to ask for the 
 system date or set the useSystemDate to true, as this will make all valid 
 date formats convert to dateItems.
 
 Best regards
 Tore Nilsen
> 28. okt. 2020 kl. 22:58 skrev Graham Samuel via use-livecode 
> :
> 
> A quick test seems to show that the DateFormat can’t be changed by a 
> ‘set’ command.
> 
> How then can I force a date to be in a given format? I’m really thinking 
> of the difference between US and European dates, i.e
> 
> d/m/y versus m/d/y
> 
> Obviously for some types of use, an LC program should be able to force 
> the format for consistency’s sake, regardless of where in the world it’s 
> being run.
> 
> Can it be done?
> 
> Graham
> ___
> 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
> 
> 
> ___
> 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


Re: Is the DateFormat read only?

2020-10-29 Thread Tore Nilsen via use-livecode
If you only use a date and  convert it, dateItems will assume the time to be 
midnight on that particular date.

Tore

> 29. okt. 2020 kl. 12:04 skrev Graham Samuel via use-livecode 
> :
> 
> Just FYI, I think the dictionary is wrong or misleading in respect of what 
> the dateItems does. If you script this in the LC Message Box:
> 
> put the date into t1
> convert t1 to dateItems
> put t1
> 
> You get, e.g.
> 2020,10,29,0,0,0,5
> 
> 
> but if you script
> 
> put the english time into t1
> convert t1 to dateItems
> put t1
> 
> You get e.g.
> 2020,10,29,11,40,0,5
> 
> i.e if you specify the date, you only get the date; but if you specify the 
> time, you get the date thrown in. I could not deduce this from the 
> Dictionary, but maybe I am just poor at reading what it says.
> 
> Graham
> 
>> On 29 Oct 2020, at 09:29, Graham Samuel via use-livecode 
>>  wrote:
>> 
>> Thanks Tore - I had forgotten the existence of dateItems. That of course 
>> will do the trick. BTW I was trying to create dates in standard UTC format, 
>> and now I can.
>> 
>> Graham
>> 
>>> On 28 Oct 2020, at 23:18, Tore Nilsen via use-livecode 
>>>  wrote:
>>> 
>>> You can convert any given date to dateItems. Then you can use dateItems to 
>>> present the date in any format you like. A date converted to dateItems will 
>>> give you the following list of items: 
>>> 
>>> the year
>>> the month number
>>> the day of the month
>>> the hour in 24-hour time
>>> the minute
>>> the second
>>> the numeric day of the week where Sunday is day 1, Monday is day 2, and so 
>>> forth
>>> All according to the Dictionary.
>>> 
>>> To be sure that any valid date format is recognized as a date when you read 
>>> in the date you will like to convert, it is best to ask for the system date 
>>> or set the useSystemDate to true, as this will make all valid date formats 
>>> convert to dateItems.
>>> 
>>> Best regards
>>> Tore Nilsen
 28. okt. 2020 kl. 22:58 skrev Graham Samuel via use-livecode 
 :
 
 A quick test seems to show that the DateFormat can’t be changed by a ‘set’ 
 command.
 
 How then can I force a date to be in a given format? I’m really thinking 
 of the difference between US and European dates, i.e
 
 d/m/y versus m/d/y
 
 Obviously for some types of use, an LC program should be able to force the 
 format for consistency’s sake, regardless of where in the world it’s being 
 run.
 
 Can it be done?
 
 Graham
 ___
 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


___
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


Re: Is the DateFormat read only?

2020-10-29 Thread Graham Samuel via use-livecode
Just FYI, I think the dictionary is wrong or misleading in respect of what the 
dateItems does. If you script this in the LC Message Box:

put the date into t1
convert t1 to dateItems
put t1

You get, e.g.
2020,10,29,0,0,0,5


but if you script

put the english time into t1
convert t1 to dateItems
put t1

You get e.g.
2020,10,29,11,40,0,5

i.e if you specify the date, you only get the date; but if you specify the 
time, you get the date thrown in. I could not deduce this from the Dictionary, 
but maybe I am just poor at reading what it says.

Graham

> On 29 Oct 2020, at 09:29, Graham Samuel via use-livecode 
>  wrote:
> 
> Thanks Tore - I had forgotten the existence of dateItems. That of course will 
> do the trick. BTW I was trying to create dates in standard UTC format, and 
> now I can.
> 
> Graham
> 
>> On 28 Oct 2020, at 23:18, Tore Nilsen via use-livecode 
>>  wrote:
>> 
>> You can convert any given date to dateItems. Then you can use dateItems to 
>> present the date in any format you like. A date converted to dateItems will 
>> give you the following list of items: 
>> 
>> the year
>> the month number
>> the day of the month
>> the hour in 24-hour time
>> the minute
>> the second
>> the numeric day of the week where Sunday is day 1, Monday is day 2, and so 
>> forth
>> All according to the Dictionary.
>> 
>> To be sure that any valid date format is recognized as a date when you read 
>> in the date you will like to convert, it is best to ask for the system date 
>> or set the useSystemDate to true, as this will make all valid date formats 
>> convert to dateItems.
>> 
>> Best regards
>> Tore Nilsen
>>> 28. okt. 2020 kl. 22:58 skrev Graham Samuel via use-livecode 
>>> :
>>> 
>>> A quick test seems to show that the DateFormat can’t be changed by a ‘set’ 
>>> command.
>>> 
>>> How then can I force a date to be in a given format? I’m really thinking of 
>>> the difference between US and European dates, i.e
>>> 
>>> d/m/y versus m/d/y
>>> 
>>> Obviously for some types of use, an LC program should be able to force the 
>>> format for consistency’s sake, regardless of where in the world it’s being 
>>> run.
>>> 
>>> Can it be done?
>>> 
>>> Graham
>>> ___
>>> 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


Re: Is the DateFormat read only?

2020-10-29 Thread Graham Samuel via use-livecode
Thanks Tore - I had forgotten the existence of dateItems. That of course will 
do the trick. BTW I was trying to create dates in standard UTC format, and now 
I can.

Graham

> On 28 Oct 2020, at 23:18, Tore Nilsen via use-livecode 
>  wrote:
> 
> You can convert any given date to dateItems. Then you can use dateItems to 
> present the date in any format you like. A date converted to dateItems will 
> give you the following list of items: 
> 
> the year
> the month number
> the day of the month
> the hour in 24-hour time
> the minute
> the second
> the numeric day of the week where Sunday is day 1, Monday is day 2, and so 
> forth
> All according to the Dictionary.
> 
> To be sure that any valid date format is recognized as a date when you read 
> in the date you will like to convert, it is best to ask for the system date 
> or set the useSystemDate to true, as this will make all valid date formats 
> convert to dateItems.
> 
> Best regards
> Tore Nilsen
>> 28. okt. 2020 kl. 22:58 skrev Graham Samuel via use-livecode 
>> :
>> 
>> A quick test seems to show that the DateFormat can’t be changed by a ‘set’ 
>> command.
>> 
>> How then can I force a date to be in a given format? I’m really thinking of 
>> the difference between US and European dates, i.e
>> 
>> d/m/y versus m/d/y
>> 
>> Obviously for some types of use, an LC program should be able to force the 
>> format for consistency’s sake, regardless of where in the world it’s being 
>> run.
>> 
>> Can it be done?
>> 
>> Graham
>> ___
>> 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


Re: Is the DateFormat read only?

2020-10-28 Thread Tore Nilsen via use-livecode
You can convert any given date to dateItems. Then you can use dateItems to 
present the date in any format you like. A date converted to dateItems will 
give you the following list of items: 

the year
the month number
the day of the month
the hour in 24-hour time
the minute
the second
the numeric day of the week where Sunday is day 1, Monday is day 2, and so forth
All according to the Dictionary.

To be sure that any valid date format is recognized as a date when you read in 
the date you will like to convert, it is best to ask for the system date or set 
the useSystemDate to true, as this will make all valid date formats convert to 
dateItems.

Best regards
Tore Nilsen
> 28. okt. 2020 kl. 22:58 skrev Graham Samuel via use-livecode 
> :
> 
> A quick test seems to show that the DateFormat can’t be changed by a ‘set’ 
> command.
> 
> How then can I force a date to be in a given format? I’m really thinking of 
> the difference between US and European dates, i.e
> 
> d/m/y versus m/d/y
> 
> Obviously for some types of use, an LC program should be able to force the 
> format for consistency’s sake, regardless of where in the world it’s being 
> run.
> 
> Can it be done?
> 
> Graham
> ___
> 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


Re: Is the DateFormat read only?

2020-10-28 Thread John Balgenorth via use-livecode
You can  always use a shell command for things like
Dates and Calendars etc.  Google it and you will get
plenty of info.

JB

> On Oct 28, 2020, at 2:59 PM, Graham Samuel via use-livecode 
>  wrote:
> 
> A quick test seems to show that the DateFormat can’t be changed by a ‘set’ 
> command.
> 
> How then can I force a date to be in a given format? I’m really thinking of 
> the difference between US and European dates, i.e
> 
> d/m/y versus m/d/y
> 
> Obviously for some types of use, an LC program should be able to force the 
> format for consistency’s sake, regardless of where in the world it’s being 
> run.
> 
> Can it be done?
> 
> Graham
> ___
> 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