我正在使用jsTimezoneDetect脚本来检测用户当前时区。下面的代码显示结果为lowercase_expanded_terms
。有没有办法显示America/Chicago
/ CDT
(取决于今天的日期)?
CST
或者我可以使用其他任何脚本吗?
答案 0 :(得分:4)
首先明白:
在许多浏览器中,您可以直接获取缩写(通过ECMA-402):
var d = new Date(); // now, or the specific date in question
var s = d.toLocaleString("en", {timeZoneName: "short"}).split(' ').pop();
但这并不一定适用于所有地方。
由于您正在使用jsTimeZoneDetect,因此您已拥有IANA时区标识符(" America / Chicago")。所以,你可以从moment-timezone得到它,就像这样:
var m = moment(); // now, or the moment in question
var s = m.tz('America/Chicago').format('z');
这可以在任何地方使用,但你有时间和时刻的开销,以及jstz,除非你将这些库用于其他目的,否则这可能是过度的。
您可能还会考虑服务器端解决方案。例如,如果您使用的是PHP,则可以使用this code。或者,如果您使用的是.NET,则可以使用我的TimeZoneNames库。
答案 1 :(得分:-1)
在原生JS中你可以:
var d = new Date();
timezone = d.getTimezoneOffset();
然后用开关转过来。