I’m working on a project which includes seasonal content, and we’re thinking of determining the user’s location to work out what season it is for them. The obvious way of doing this is to Geo-locate their IP, then grab the latitude. > 0 is Northern hemisphere, and < 0 is Southern.
I’m happy to go that way – though it seems a bit of a waste to pinpoint an IP to an exact location, just to determine which half of the planet they’re on – but I thought I’d throw it out there in case anyone has any tricks which might shortcut the process.
Request headers, stuff that can be extracted with JS on the client, it’s all easy enough to get – I just don’t think any of it helps.
Advertisement
Answer
I’d first check the client’s clock- if daylight savings exists in the client’s calendar, you can tell if he is north or south of the equator.
if there is no dst information, you can use geolocation,
or ask the user if he is south of the equator…
window.whatHemisphere= (function(){ var y= new Date().getFullYear(); if(y.getTimezoneOffset()==undefined) return null; var jan= -(new Date(y, 0, 1, 0, 0, 0, 0).getTimezoneOffset()), jul= -(new Date(y, 6, 1, 0, 0, 0, 0).getTimezoneOffset()), diff= jan-jul; if(diff> 0) return 'N'; if(diff< 0) return 'S' return null; })()