Welcome Guest, Not a member yet? Register   Sign In
gmt_to_local() returns incorrect date
#1

[eluser]the real rlee[/eluser]
Hi guys,

I'm having weird issue with the date helper in CI. gmt_to_local() with correct timezone (UP10) is not showing the correct date, however PHP's gmdate IS showing the correct date.

What's possibly wrong here?

FYI Im using XAMPP on my local machine
#2

[eluser]Dimitar[/eluser]
How many minutes is the difference and is the time on your local machine correct?
#3

[eluser]the real rlee[/eluser]
hmm does this matter (?)... php's gmdate() returns correct day. please explain Smile
#4

[eluser]the real rlee[/eluser]
Ok, it seems gmt_to_local() is returning exactly 11 hours ahead of what it should be Sad Anyone got any ideas on how to fix this. Would really appreciate some help on this
#5

[eluser]Myles Wakeham[/eluser]
Have you had a look at the source in date_helper.php to see what could be going on there? I believe there are differences in date handling with PHP depending on whether you are running on Windows or Linux, and a lot of it has to do with the date range that you are dealing with (ie. I believe under certain PHP versions, dates < 1970 on Windows are not supported?). Anyway the source code is right there. Add some statements in the helper to let you see what is going on, and it should tell you what the deal is.

I use it in my apps with XAMP on Windows and its working fine for me.

Myles
#6

[eluser]the real rlee[/eluser]
Ok, im getting confused lol. Seems in config i can set time ref to be local or gmt. Obviously how i set this depends on what the server is already using yes? Do you know what Xammp is using?
#7

[eluser]Myles Wakeham[/eluser]
Have you traced through your code and looked at what gmt_to_local() is doing? The code is really simple:

Code:
function gmt_to_local($time = '', $timezone = 'UTC', $dst = FALSE)
{            
    if ($time == '')
    {
        return now();
    }
    
    $time += timezones($timezone) * 3600;

    if ($dst == TRUE)
    {
        $time += 3600;
    }
    
    return $time;
}

Just trace through this and see what its doing. The answer to your question lies in that.

Myles
#8

[eluser]Myles Wakeham[/eluser]
Also you can test to see what the default timezone on the server is set with the PHP command 'date_default_timezone_get'. That should tell you what your computer is assuming is the default timezone.

Myles
#9

[eluser]the real rlee[/eluser]
Think i get it now... My problem lies in the fact I'm trying to convert a value, which is already local time, to local time again i.e. gmt + timezone!




Theme © iAndrew 2016 - Forum software by © MyBB