如何收集访问者的时区信息?
我两者都需要:
时区(例如,欧洲/伦敦) 与UTC或GMT的偏移(例如,UTC+01)
如何收集访问者的时区信息?
我两者都需要:
时区(例如,欧洲/伦敦) 与UTC或GMT的偏移(例如,UTC+01)
当前回答
你可以简单地试试这个。 它将返回您当前的机器时间
var _d = new Date(), T = 0, d = new Date(t*1000 + _d.getTime())
其他回答
尝试Date对象的getTimezoneOffset():
var curdate = new Date()
var offset = curdate.getTimezoneOffset()
此方法返回时区偏移量(以分钟为单位),即GMT和本地时间之间的差值(以分钟为单位)。
作为new Date().getTimezoneOffset()和moment().format('zz')的替代方案,你也可以使用momentjs:
var offset = moment.parseZone(Date.now()).utcOffset() / 60 . var offset = moment.parseZone(Date.now()).utcOffset( console.log(抵消); < script src = " https://cdn.jsdelivr.net/momentjs/2.13.0/moment.min.js " > < /脚本>
Jstimezone也有很多bug,而且没有维护(https://bitbucket.org/pellepim/jstimezonedetect/issues?status=new&status=open)
正如其他人提到的,要获得时区:
const tz = Intl.DateTimeFormat().resolvedOptions().timeZone
之前没有提到,要从时区获取偏移量,使用区域设置“ia”(参见https://stackoverflow.com/a/64262840/1061871)
const getOffset = (tz) => Intl.DateTimeFormat("ia", {
timeZoneName: "shortOffset",
timeZone : tz
})
.formatToParts()
.find((i) => i.type === "timeZoneName").value // => "GMT+/-hh:mm"
.slice(3); //=> +/-hh:mm
console.log(tz + ' UTC' + getOffset(tz))
用getTimezoneOffset ()
你可以像这样在几分钟内得到时区偏移量:
var offset = new Date().getTimezoneOffset(); console.log(抵消); //如果偏移量等于-60,则时区偏移量为UTC+01
时区偏移量是UTC和本地时间之间的差值,单位为分钟。注意,这意味着如果本地时区落后于UTC,则偏移量为正,如果落后于UTC,则偏移量为负。例如,如果您的时区是UTC+10(澳大利亚东部标准时间),则将返回-600。即使对于给定的区域,夏令时也可以防止此值为常量
Mozilla日期对象引用
请注意,并非所有时区都被整小时抵消:例如,纽芬兰是UTC减去3h 30m(将日光节约时间排除在等式之外)。
请注意,这只给你时区偏移(例如:UTC+01),它不给你时区(例如:欧洲/伦敦)。
时区(小时)-
var offset = new Date().getTimezoneOffset(); 如果(抵消< 0) console.log("您的时区是- GMT+" + (offset/-60)); 其他的 console.log("您的时区是- GMT-" + offset/60);
如果你想要像你在评论中提到的那样精确,那么你应该这样尝试-
var offset = new Date().getTimezoneOffset(); 如果(偏移<0) { var extraZero = “”; if(-offset%60<10) extraZero=“0”; console.log( “Your timezone is- GMT+” + Math.ceil(offset/-60)+“:”+extraZero+(-offset%60)); } 还 { var extraZero = “”; if(偏移量%60<10) extraZero=“0”; console.log( “Your timezone is- GMT-” + Math.floor(offset/60)+“:”+extraZero+(offset%60)); }