如何收集访问者的时区信息?
我两者都需要:
时区(例如,欧洲/伦敦) 与UTC或GMT的偏移(例如,UTC+01)
如何收集访问者的时区信息?
我两者都需要:
时区(例如,欧洲/伦敦) 与UTC或GMT的偏移(例如,UTC+01)
当前回答
下面是通过将时区传递给函数来查找远程国家TimezoneOffset的解决方案。在这个例子中,'Asia/Calcutta'是时区
function getTimezoneOffset(timezone) {
LocalDate = new Date();
LocalDate.setMilliseconds(0);
const LocalOffset = LocalDate.getTimezoneOffset();
RemoteLocaleStr = LocalDate.toLocaleString('en-US', {timeZone: timezone});
RemoteDate = new Date(RemoteLocaleStr);
diff = (LocalDate.getTime()-RemoteDate.getTime()) / 1000 / 60 ;
RemoteOffset = LocalOffset + diff;
return RemoteOffset;
}
console.log(getTimezoneOffset('Asia/Calcutta'));
其他回答
一旦我有了这个“简单”的任务,我使用(new Date()). gettimezoneoffset() -这里广泛建议的方法。但事实证明,这个解决方案并不完全正确。 在我的例子中,由于一些未记录的原因,new Date()返回GMT+0200,而new Date(0)返回GMT+0300,这是正确的。从那时起我就一直用
(new Date(0)). gettimezoneoffset()来获得正确的时间差。
使用momentjs,您可以找到当前时区为
console.log(时刻).utcOffset ());//(-240, -120, - 60,0, 60,120, 240,等等) < script src = " https://cdn.jsdelivr.net/momentjs/2.13.0/moment.min.js " > < /脚本>
使用dayjs,您可以找到当前时区为
console.log(dayjs().utcOffset());(-240、-120、-60、0、60、120、240 等) <script src=“https://unpkg.com/dayjs@1.8.10/dayjs.min.js”></script>
这两个API都返回以分钟为单位的utc偏移量。
现在医生 Dayjs医生
在新的Date()中,你可以获得偏移量,要获得时区名称,你可以这样做:
.replace .toString新的日期()() (/(.*\((.*)\).*)/, '$ 2》);
在日期的末尾得到between()值,即时区的名称。
用getTimezoneOffset ()
你可以像这样在几分钟内得到时区偏移量:
var offset = new Date().getTimezoneOffset(); console.log(抵消); //如果偏移量等于-60,则时区偏移量为UTC+01
时区偏移量是UTC和本地时间之间的差值,单位为分钟。注意,这意味着如果本地时区落后于UTC,则偏移量为正,如果落后于UTC,则偏移量为负。例如,如果您的时区是UTC+10(澳大利亚东部标准时间),则将返回-600。即使对于给定的区域,夏令时也可以防止此值为常量
Mozilla日期对象引用
请注意,并非所有时区都被整小时抵消:例如,纽芬兰是UTC减去3h 30m(将日光节约时间排除在等式之外)。
请注意,这只给你时区偏移(例如:UTC+01),它不给你时区(例如:欧洲/伦敦)。
JavaScript:
var d = new Date(); var n = d.getTimezoneOffset(); Var时区= n / -60; console.log(时区);