我正在开展一个包含季节性内容的项目,我们正在考虑确定用户的位置,以确定他们的季节。这样做的显而易见的方法是对其IP进行地理定位,然后获取纬度。 > 0是北半球,< 0是南方。
我很高兴这样做 - 虽然将IP确定到一个确切的位置似乎有点浪费,只是为了确定它们所在的行星的哪一半 - 但我想我会抛弃它如果有人有任何可以简化过程的技巧。
请求标题,可以在客户端使用JS提取的东西,这一切都很容易获得 - 我只是觉得它没有任何帮助。
答案 0 :(得分:5)
您可以使用navigator.geolocation方法来避免任何类型的IP服务。
答案 1 :(得分:3)
我先检查客户的时钟 - 如果客户日历中存在夏令时, 你可以判断他是在赤道的北部还是南部。
如果没有dst信息,您可以使用地理位置,
或询问用户他是否在赤道以南......
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;
})()
答案 2 :(得分:1)
@kennebec 的回答很聪明,但代码似乎未经测试。这是有效的代码。它对不使用夏令时问题的地方没有帮助。
function whatHemisphere() {
let y = new Date()
if (y.getTimezoneOffset==undefined) return null
y = y.getFullYear()
let jan = -(new Date(y, 0, 1, 0, 0, 0, 0).getTimezoneOffset())
let jul = -(new Date(y, 6, 1, 0, 0, 0, 0).getTimezoneOffset())
let diff = jan - jul
if (diff < 0) return 'N'
if (diff > 0) return 'S'
return null
}