谁能写一个函数来获取客户端 时区,返回值如:EDT
EST
IST
等
toTimeString()
方法给出时区名称的时间,请尝试以下...
var d=new Date();
var n=d.toTimeString();
ouput
03:41:07 GMT+0800 (PHT) or 09:43:01 EDT
演示
或
检查:使用 JavaScript 自动检测时区
下载 jstz.min.js 并向您的 HTML 页面添加一个函数
<script language="javascript">
function getTimezoneName() {
timezone = jstz.determine_timezone()
return timezone.name();
}
</script>
.getTimezoneOffset() 函数,然后从此 URL timeanddate 构建一个哈希表,以将其与 timeanddate 相关联(如果要使用时区值)。
如果查看调用 Date 对象的 toString
方法的结果,将得到类似于"2012 年 4 月 24 日星期二 23:30:54 GMT+1000(澳大利亚东部标准时间)"的值。这将取决于您的系统区域设置设置。
从那里,您可以匹配括号中的每个大写字母。
var paren = new Date().toString().match(/(.+)/);
return paren ? paren[0].match(/([A-Z])/g).join("") : "";
问题是并非每个浏览器都会包含括号值。
如果你使用已知的Java插件来定位Firefox,你也可以利用Javascript中的java
对象,根据名称(例如。"美国/Los_Angeles"),然后调用getDisplayName
方法给你名字。
使用 jstz 获取时区名称:
jstz.determine().name();
它返回时区名称(如'America/New York'
),然后您可以将其与moment.js
等一起使用。
偏移量(例如来自 js Date
对象的偏移量)是不够的,因为它不携带额外的 DST 信息(您不知道是否需要为夏令时调整时间以及何时调整)。
- 在 JavaScript 中获取客户端时区
- 输出从 -12 : +12
-
您可以通过更改此行的输出来修改输出
-Math.round(a/60)+':'+-(a%60);
喜欢-Math.round(a/60);
你得到//+2var a = new Date().getTimezoneOffset(); var res = -Math.round(a/60)+':'+-(a%60); res = res < 0 ?res : '+'+res; console.log(res);
参考
如果您不介意获取全名,请尝试以下操作:
let timeZone = Intl.DateTimeFormat().solveOptions().timeZone; 像"美国/芝加哥"
(哦,你11年前问过。我的坏。;-)
获得国家/地区完整时区的完美答案-
var a = new Date($.now());
var regExp = /(([^)]+))/;`enter code here`
var matches = regExp.exec(a);
alert(matches[1]);
此警报将为您提供输出,如印度标准时间,美国标准时间,非洲标准时间:
//$("#timezone option:contains(" + matches[1] + ")").attr('selected', 'selected');