Re: timezone

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Apr 15, 2013 at 10:06 PM, Larry Martell <larry@xxxxxxxxxxxxxxxxxxxxx="mailto:larry@xxxxxxxxxxxxxxxxxxxxx";>> wrote:
On Mon, Apr 15, 2013 at 2:57 PM, Maciek Sokolewicz
 wrote:
> On 15-4-2013 22:12, Larry Martell wrote:
>>
>> On Mon, Apr 15, 2013 at 1:59 PM, Lester Caine  wrote:
>>>
>>> Larry Martell wrote:
>>>>>
>>>>>
>>>>> No, I don't - this app runs in different locations all over the world.
>>>>
>>>>
>>>> I found some code at php.net that does this:
>>>>
>>>> date_default_timezone_set(@date_default_timezone_get());
>>>> $deftz = date('T');
>>>>
>>>> And that is working for me and giving me what I need.
>>>
>>>
>>>
>>> But do you ACTUALLY know what time zone is stored IN the database? What
>>> if
>>> te database was from another server?
>>>
>>> One of the 'standards' adopted when working world wide is to ensure what
>>> is
>>> stored IN the database is always UTC based. So you can always compare
>>> times
>>> on the same consistent base. The only time you need the offset is to
>>> display
>>> a local time, and that is either the time local to the server, or the
>>> time
>>> local to the client.
>>>
>>> The 'default' timezone is not necessarily the right one in either case ;)
>>
>>
>> I misspoke - the data in the db is in UTC. This is used to covert the
>> time of day on the server to the user's local timezone.
>>
>
> You are aware that the code you used is really bad practice, right? You're
> basically hiding the error "no default timezone set" by getting the default
> timezone, which returns an error; surpressing that error, providing the
> date_default_timezone_set function with the default value of
> date_default_timezone_get if none is defined (which there should!!), being
> "UTC".
>
> So in short, you're saying "set the default timezone to the default timezone
> if no timezone is set, which I know there is not". That's very hard to
> understand for future programmers reading your code. Why not just set
> "date_default_timezone_set('UTC')". It's clear, resolves the warning and
> works perfectly, instead of relying on vague defaults somewhere, in the hope
> they're set right.
>
> On a sidenote; the reason why your original "fix" did not work:
> $deftz = date.timezone;
> Is because date.timezone is an ini setting. Not valid PHP code. And the
> error actually tells you you need to SET date.timezone, not set a variable
> TO the ini setting. In other words, you wanted date.timezone = "UTC" instead
> of $tz = date.timezone (which makes no sense anyway)

But UCT is not the timezone. When this app runs in New Mexico (where I
am) it's Mountain time. When it runs in NY it's Eastern. When it runs
in Tokyo it's JST, etc. The user has the option of setting the
timezone all times are displayed in. They can select any timezone
regardless of where they are. The app displays the last update time in
the user selected TZ. So I have to convert the time I get from the
server to that.@xxxxxxxxxxx>@gmail.com>@gmail.com>

You don't need to convert anything! Store as unix timestamps, and call date_default_timezone_set with the user's selection before you use any other date-related functions and everything will just work. This is not as hard as everyone seems to think!​​​-Stuart


​—
Sent from my leaf blower@xxxxxxxxx>@lsces.co.uk>@gmail.com>​@lsces.co.uk>@gmail.com>

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux