PDA

View Full Version : Timezone convertion



jtheman
29-01-2012, 12:57 PM
Hello, I'm trying to code a image with a time on it, like
http://habbox.com/cache/scripts/events_signatures/?/WinterDome

How could i make it convert the time from (GMT) to the users timezone?

Please help! Thanks.

Blinger
30-01-2012, 02:06 AM
http://www.php.net/manual/en/function.date.php#93154 that sounds like what you want, then you just need to get the timezone they are in by using php or whatever. maybe try this: http://www.xpertdeveloper.com/2010/09/get-users-timezone-using-php-and-javascript/

HotelUser
30-01-2012, 02:11 AM
The way I account for timezones is lets say I have a timestamp in variable $whatever. I would echo (time() - $whatever) which would print out the amount of seconds since the event $whatever happened. I would then use a javascript function I wrote to take those seconds since the event occurred and convert them into a human readable time (I am able to do this correctly in Javascript because timestamps in Javascript are based upon the user's computer timezone settings).

jtheman
31-01-2012, 06:38 AM
I can't use javascript in a GD tho :(

---------- Post added 31-01-2012 at 06:51 AM ----------

I can't use javascript in a GD tho :(
Oh
http://habbox.com/cache/scripts/events_signatures/?/WinterDome
Must use the forum or something, when i view it on a proxy it shows no timezone.
Thanks guys.

HotelUser
31-01-2012, 02:23 PM
I can't use javascript in a GD tho :(

---------- Post added 31-01-2012 at 06:51 AM ----------

I can't use javascript in a GD tho :(
Oh
http://habbox.com/cache/scripts/events_signatures/?/WinterDome
Must use the forum or something, when i view it on a proxy it shows no timezone.
Thanks guys.

For things like this I use your ip to geolocate you. If you Google "ip geolocate api" several free services come up. Your time zone is then stored in a cookie as so a request to the external API does not have to run on every page load.

HotelUser
08-02-2012, 10:41 PM
I just wanted to bump this slightly to share another method of finding user timezones on websites (wont be good for images crafted in GD, but is a good and simply alternative for folks who want websites to appear in user's local timezones).

1. Stick this before EVERYTHING else in your index file (should be index.php, unless it ends in .php this wont work)


<?php
if(isset($_COOKIE['timezone']) && !empty($_COOKIE['timezone']))
{
date_default_timezone_set($_COOKIE['timezone']);
}else{
exit('<script>var jstz=function(){var a=function(b){b=-b.getTimezoneOffset();return b!==null?b:0},g=function(){return a(new Date(2010,0,1,0,0,0,0))},f=function(){return a(new Date(2010,5,1,0,0,0,0))},h=function(){var d=g(),c=f(),e=g()-f();if(e<0){return d+",1"}else{if(e>0){return c+",1,s"}}return d+",0"};return{determine_timezone:function(){var b=h();return new jstz.TimeZone(jstz.olson.timezones[b])},date_is_dst:function(b){var d=b.getMonth()>5?f():g(),b=a(b);return d-b!==0}}}();jstz.TimeZone=function(){var a=null,g=null,f=null,h=function(b){f=b[0];a=b[1];g=b[2];if(typeof jstz.olson.ambiguity_list[a]!=="undefined"){for(var b=jstz.olson.ambiguity_list[a],i=b.length,e=0,d=b[0];e<i;e+=1){if(d=b[e],jstz.date_is_dst(jstz.olson.dst_start_dates[d])){a=d;break}}}};h.prototype={constructor:jstz.Tim eZone,name:function(){return a},dst:function(){return g},offset:function(){return f}};return h}();jstz.olson={};jstz.olson.timezones=function() {return{"-720,0":["-12:00","Etc/GMT+12",!1],"-660,0":["-11:00","Pacific/Pago_Pago",!1],"-600,1":["-11:00","America/Adak",!0],"-660,1,s":["-11:00","Pacific/Apia",!0],"-600,0":["-10:00","Pacific/Honolulu",!1],"-570,0":["-09:30","Pacific/Marquesas",!1],"-540,0":["-09:00","Pacific/Gambier",!1],"-540,1":["-09:00","America/Anchorage",!0],"-480,1":["-08:00","America/Los_Angeles",!0],"-480,0":["-08:00","Pacific/Pitcairn",!1],"-420,0":["-07:00","America/Phoenix",!1],"-420,1":["-07:00","America/Denver",!0],"-360,0":["-06:00","America/Guatemala",!1],"-360,1":["-06:00","America/Chicago",!0],"-360,1,s":["-06:00","Pacific/Easter",!0],"-300,0":["-05:00","America/Bogota",!1],"-300,1":["-05:00","America/New_York",!0],"-270,0":["-04:30","America/Caracas",!1],"-240,1":["-04:00","America/Halifax",!0],"-240,0":["-04:00","America/Santo_Domingo",!1],"-240,1,s":["-04:00","America/Asuncion",!0],"-210,1":["-03:30","America/St_Johns",!0],"-180,1":["-03:00","America/Godthab",!0],"-180,0":["-03:00","America/Argentina/Buenos_Aires",!1],"-180,1,s":["-03:00","America/Montevideo",!0],"-120,0":["-02:00","America/Noronha",!1],"-120,1":["-02:00","Etc/GMT+2",!0],"-60,1":["-01:00","Atlantic/Azores",!0],"-60,0":["-01:00","Atlantic/Cape_Verde",!1],"0,0":["00:00","Etc/UTC",!1],"0,1":["00:00","Europe/London",!0],"60,1":["+01:00","Europe/Berlin",!0],"60,0":["+01:00","Africa/Lagos",!1],"60,1,s":["+01:00","Africa/Windhoek",!0],"120,1":["+02:00","Asia/Beirut",!0],"120,0":["+02:00","Africa/Johannesburg",!1],"180,1":["+03:00","Europe/Moscow",!0],"180,0":["+03:00","Asia/Baghdad",!1],"210,1":["+03:30","Asia/Tehran",!0],"240,0":["+04:00","Asia/Dubai",!1],"240,1":["+04:00","Asia/Yerevan",!0],"270,0":["+04:30","Asia/Kabul",!1],"300,1":["+05:00","Asia/Yekaterinburg",!0],"300,0":["+05:00","Asia/Karachi",!1],"330,0":["+05:30","Asia/Kolkata",!1],"345,0":["+05:45","Asia/Kathmandu",!1],"360,0":["+06:00","Asia/Dhaka",!1],"360,1":["+06:00","Asia/Omsk",!0],"390,0":["+06:30","Asia/Rangoon",!1],"420,1":["+07:00","Asia/Krasnoyarsk",!0],"420,0":["+07:00","Asia/Jakarta",!1],"480,0":["+08:00","Asia/Shanghai",!1],"480,1":["+08:00","Asia/Irkutsk",!0],"525,0":["+08:45","Australia/Eucla",!0],"525,1,s":["+08:45","Australia/Eucla",!0],"540,1":["+09:00","Asia/Yakutsk",!0],"540,0":["+09:00","Asia/Tokyo",!1],"570,0":["+09:30","Australia/Darwin",!1],"570,1,s":["+09:30","Australia/Adelaide",!0],"600,0":["+10:00","Australia/Brisbane",!1],"600,1":["+10:00","Asia/Vladivostok",!0],"600,1,s":["+10:00","Australia/Sydney",!0],"630,1,s":["+10:30","Australia/Lord_Howe",!0],"660,1":["+11:00","Asia/Kamchatka",!0],"660,0":["+11:00","Pacific/Noumea",!1],"690,0":["+11:30","Pacific/Norfolk",!1],"720,1,s":["+12:00","Pacific/Auckland",!0],"720,0":["+12:00","Pacific/Tarawa",!1],"765,1,s":["+12:45","Pacific/Chatham",!0],"780,0":["+13:00","Pacific/Tongatapu",!1],"840,0":["+14:00","Pacific/Kiritimati",!1]}}();jstz.olson.dst_start_dates=function(){return{"America/Denver":new Date(2011,2,13,3,0,0,0),"America/Mazatlan":new Date(2011,3,3,3,0,0,0),"America/Chicago":new Date(2011,2,13,3,0,0,0),"America/Mexico_City":new Date(2011,3,3,3,0,0,0),"Atlantic/Stanley":new Date(2011,8,4,7,0,0,0),"America/Asuncion":new Date(2011,9,2,3,0,0,0),"America/Santiago":new Date(2011,9,9,3,0,0,0),"America/Campo_Grande":new Date(2011,9,16,5,0,0,0),"America/Montevideo":new Date(2011,9,2,3,0,0,0),"America/Sao_Paulo":new Date(2011,9,16,5,0,0,0),"America/Los_Angeles":new Date(2011,2,13,8,0,0,0),"America/Santa_Isabel":new Date(2011,3,5,8,0,0,0),"America/Havana":new Date(2011,2,13,2,0,0,0),"America/New_York":new Date(2011,2,13,7,0,0,0),"Asia/Gaza":new Date(2011,2,26,23,0,0,0),"Asia/Beirut":new Date(2011,2,27,1,0,0,0),"Europe/Minsk":new Date(2011,2,27,2,0,0,0),"Europe/Helsinki":new Date(2011,2,27,4,0,0,0),"Europe/Istanbul":new Date(2011,2,28,5,0,0,0),"Asia/Damascus":new Date(2011,3,1,2,0,0,0),"Asia/Jerusalem":new Date(2011,3,1,6,0,0,0),"Africa/Cairo":new Date(2010,3,30,4,0,0,0),"Asia/Yerevan":new Date(2011,2,27,4,0,0,0),"Asia/Baku":new Date(2011,2,27,8,0,0,0),"Pacific/Auckland":new Date(2011,8,26,7,0,0,0),"Pacific/Fiji":new Date(2010,11,29,23,0,0,0),"America/Halifax":new Date(2011,2,13,6,0,0,0),"America/Goose_Bay":new Date(2011,2,13,2,1,0,0),"America/Miquelon":new Date(2011,2,13,5,0,0,0),"America/Godthab":new Date(2011,2,27,1,0,0,0)}}();jstz.olson.ambiguity_l ist={"America/Denver":["America/Denver","America/Mazatlan"],"America/Chicago":["America/Chicago","America/Mexico_City"],"America/Asuncion":["Atlantic/Stanley","America/Asuncion","America/Santiago","America/Campo_Grande"],"America/Montevideo":["America/Montevideo","America/Sao_Paulo"],"Asia/Beirut":"Asia/Gaza,Asia/Beirut,Europe/Minsk,Europe/Helsinki,Europe/Istanbul,Asia/Damascus,Asia/Jerusalem,Africa/Cairo".split(","),"Asia/Yerevan":["Asia/Yerevan","Asia/Baku"],"Pacific/Auckland":["Pacific/Auckland","Pacific/Fiji"],"America/Los_Angeles":["America/Los_Angeles","America/Santa_Isabel"],"America/New_York":["America/Havana","America/New_York"],"America/Halifax":["America/Goose_Bay","America/Halifax"],"America/Godthab":["America/Miquelon","America/Godthab"]};function getCookie(b){var c,a,e,d=document.cookie.split(";");for(c=0;c<d.length;c++){a=d[c].substr(0,d[c].indexOf("="));e=d[c].substr(d[c].indexOf("=")+1);a=a.replace(/^\s+|\s+$/g,"");if(a==b){return unescape(e)}}}function setCookie(a,d,b){var e=new Date();e.setDate(e.getDate()+b);var c=escape(d)+((b==null)?"":"; expires="+e.toUTCString());document.cookie=a+"="+c}var check_timezone=getCookie("timezone");if(check_timezone==null||check_timezone==""){var timezone=jstz.determine_timezone();setCookie("timezone",timezone.name(),365);window.location.reload()};</script>');
}
?>

Chippiewill
09-02-2012, 06:52 PM
I assume I'd be able to put session_start() first?

Want to hide these adverts? Register an account for free!