Jake,
I have a vb project that auto detects Time Zone and Day Light Savings Time.. I found these JS files online and they seem to work great.. TimeZoneDetection.js : //Provided by http://www.michaelapproved.com/articles/timezone-detect-and-ignore-daylight- saving-time-dst/ function TimezoneDetect() { var dtDate = new Date('1/1/' + (new Date()).getUTCFullYear()); var intOffset = 10000; //set initial offset high so it is adjusted on the first attempt var intMonth; var intHoursUtc; var intHours; var intDaysMultiplyBy; //go through each month to find the lowest offset to account for DST for (intMonth = 0; intMonth < 12; intMonth++) { //go to the next month dtDate.setUTCMonth(dtDate.getUTCMonth() + 1); //To ignore daylight saving time look for the lowest offset. //Since, during DST, the clock moves forward, it'll be a bigger number. if (intOffset > (dtDate.getTimezoneOffset() * (-1))) { intOffset = (dtDate.getTimezoneOffset() * (-1)); } } return intOffset; } DSTDetection.js : // provided by http://www.michaelapproved.com/articles/daylight-saving-time-dst-detect/ //Find start and end of DST function DstDetect() { var dtDstDetect = new Date(); var dtDstStart = ''; var dtDstEnd = ''; var dtDstStartHold = ''; //Temp date hold var intYearDayCount = 732; //366 (include leap year) * 2 (for two years) var intHourOfYear = 1; var intDayOfYear; var intOffset = TimezoneDetect(); //Custom function. Make sure you include it. //Start from a year ago to make sure we include any previously starting DST dtDstDetect = new Date() dtDstDetect.setUTCFullYear(dtDstDetect.getUTCFullYear() - 1); dtDstDetect.setUTCHours(0, 0, 0, 0); //Going hour by hour through the year will detect DST with shorter code but that could result in 8760 //FOR loops and several seconds of script execution time. Longer code narrows this down a little. //Go one day at a time and find out approx time of DST and if there even is DST on this computer. //Also need to make sure we catch the most current start and end cycle. for (intDayOfYear = 1; intDayOfYear <= intYearDayCount; intDayOfYear++) { dtDstDetect.setUTCDate(dtDstDetect.getUTCDate() + 1); if ((dtDstDetect.getTimezoneOffset() * (-1)) != intOffset && dtDstStartHold == '') { dtDstStartHold = new Date(dtDstDetect); } if ((dtDstDetect.getTimezoneOffset() * (-1)) == intOffset && dtDstStartHold != '') { dtDstStart = new Date(dtDstStartHold); dtDstEnd = new Date(dtDstDetect); dtDstStartHold = ''; //DST is being used in this timezone. Narrow the time down to the exact hour the change happens //Remove 48 hours (a few extra to be on safe side) from the start/end date and find the exact change point //Go hour by hour until a change in the timezone offset is detected. dtDstStart.setUTCHours(dtDstStart.getUTCHours() - 48); dtDstEnd.setUTCHours(dtDstEnd.getUTCHours() - 48); //First find when DST starts for (intHourOfYear = 1; intHourOfYear <= 48; intHourOfYear++) { dtDstStart.setUTCHours(dtDstStart.getUTCHours() + 1); //If we found it then exit the loop. dtDstStart will have the correct value left in it. if ((dtDstStart.getTimezoneOffset() * (-1)) != intOffset) { break; } } //Now find out when DST ends for (intHourOfYear = 1; intHourOfYear <= 48; intHourOfYear++) { dtDstEnd.setUTCHours(dtDstEnd.getUTCHours() + 1); //If we found it then exit the loop. dtDstEnd will have the correct value left in it. if ((dtDstEnd.getTimezoneOffset() * (-1)) != (intOffset + 60)) { break; } } //Check if DST is currently on for this time frame. If it is then return these values. //If not then keep going. The function will either return the last values collected //or another value that is currently in effect if ((new Date()).getTime() >= dtDstStart.getTime() && (new Date()).getTime() <= dtDstEnd.getTime()) { return new Array(dtDstStart, dtDstEnd); } } } return new Array(dtDstStart, dtDstEnd); } Hopefully this will help your situation ? From: android-developers@googlegroups.com [mailto:android-developers@googlegroups.com] On Behalf Of String Sent: Saturday, April 23, 2011 11:41 AM To: android-developers@googlegroups.com Subject: [android-developers] Re: Timezone Question No offense, Bob (and I do mean that, I value your posts on this forum), but I think we can safely assume that the OP knows how to calculate times of sunrise and sunset. He's already showing that in his app, from the sound of things, and is probably doing OK with that aspect. The issue at hand is how (and maybe whether) to work around a user having set their phone to a different zone than the one they're actually in. Nobody says this is affecting the absolute (UTC) time of sunrise/sunset in the calculations, it's purely about display. String -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en