[Gambas-user] forcing time zone localization

Kevin Fishburne kevinfishburne at ...1887...
Sun Feb 3 09:11:53 CET 2013


On 02/01/2013 05:53 PM, Benoît Minisini wrote:
> Le 01/02/2013 08:37, Kevin Fishburne a écrit :
>> On 01/31/2013 04:29 AM, Benoît Minisini wrote:
>>> Le 31/01/2013 08:35, Kevin Fishburne a écrit :
>>>> I have a client/server application in which the server tells the client
>>>> the date and time. The date and time is calculated by the server from an
>>>> arbitrary starting point and at an arbitrary scale, but based on the
>>>> server's system clock so that time still "advances" when the server
>>>> application is not running. The client and server display the date and
>>>> time using code like this:
>>>>
>>>> Format$(CDate(DateCurrent), "mmmm d, yyyy, hh:nn:AM/PM")
>>>>
>>>> I need Gambas to use a specific time zone for the client and server,
>>>> ignoring the system time zone. I've read this:
>>>>
>>>> http://gambasdoc.org/help/doc/locale?v3
>>>>
>>>> Is what I'm trying to do possible? What environment variable should I
>>>> set in Gambas ($LC_ALL, $LANG), and is there an ISO or table of codes to
>>>> choose from? I've looked at ISO 3166 here:
>>>>
>>>> http://en.wikipedia.org/wiki/ISO_3166
>>>>
>>>> Thanks.
>>>>
>>> You should not need to use a different timezone for a program. Otherwise
>>> you can use the TZ environmental variable.
>>>
>>> But you can get the current timezone by doing: Round(Frac(Date(now)) *
>>> 24). (Meaning that the time is UTC + that value. TZ is set with the
>>> opposite).
>>>
>>> Then you can convert a local time to GTM time for your communication
>>> between server and client.
>>>
>>> Dunno if it fits your need.
>>>
>>> Regards,
>>>
>> Just spent two hours on this with no success. I have the server's OS set
>> to use Venezuela's time zone because it has no DST. The client OS is
>> UTC/GMT -5 (US Eastern). The client and server start with the same raw
>> date/time obtained through CFloat(Now) on the server. The client's
>> date/time is different than the server's by 30 minutes due to
>> localization used by Format$.
>>
>> I created a TZ environment variable and regardless of its value it has
>> no effect on the output of Format$. Is the TZ environment variable
>> ignored or not used by Format$? There may be a solution staring me in
>> the face based on the information you gave me, but I can't see it
>> despite my efforts. The really stupid way to solve the problem would be
>> to set the client and server OS time zones to be the same, but that
>> would correctly inform the user that I was an idiot. ;)
>>
> OK... You must understand that Gambas stores all date/time in UTC
> internally. The timezone is applied only when converting that date/time
> to a string.
>
> So you can safely exchange date/time between your client and your server
> by using the WRITE instruction or by converting the date/time to a
> number with CFloat() before exchanging it.
>
> Regards,
>

The date/time is sent/received as a float and stays synchronized. The 
problem is (as you say) when the float is converted to a string the time 
zone is applied. I need a way to print

Format$(CDate(DateCurrent), "mmmm d, yyyy, hh:nn:AM/PM")

without the time zone being applied, or with a specific TZ applied. 
"DateCurrent" is the float. I'm trying not to custom create a calendar 
and complicate Format$ with it, but specify a time zone. The server is 
fine, but the client applies local TZ and DST rules and fouls the 
formatting of Format$.

Hope that makes sense, and thanks.




More information about the User mailing list