Rex*_*x M 20 javascript timezone datetime
我需要在JS中确定客户端时区(例如CET,GMT,EST).获得偏移很简单,但没有确定TZ所需的所有信息,至少不容易.我感觉有可能使用偏移的组合,无论是否正在使用DST等等,但我希望其他人已经完成了这项工作,特别是考虑到处理时间时的奇怪异常.
这个问题很相似,但问题和答案都是基于(错误的)假设,每个浏览器的DateString格式都包含时区的名称 - 它不是.这是一个实现细节.
因此,我现在被卡住了.
roj*_*ojo 32
你可以从日期对象的toString()方法中删除它. new Date.toString()结果类似于Wed Sep 19 2012 10:04:32 GMT-0400 (Eastern Daylight Time)Firefox,Safari和Chrome.您想要的数据是 - 括号内的大写字母.所需要的只是刮掉它们.
在Internet Explorer的情况下,结果toString()已经包含了EDT.
在Opera的情况下,你唯一的选择是满足GMT-0400或类似.这种toString()方法没有任何可刮擦性.
var now = new Date().toString();
var TZ = now.indexOf('(') > -1 ?
now.match(/\([^\)]+\)/)[0].match(/[A-Z]/g).join('') :
now.match(/[A-Z]{3,4}/)[0];
if (TZ == "GMT" && /(GMT\W*\d{4})/.test(now)) TZ = RegExp.$1;
Run Code Online (Sandbox Code Playgroud)
示例结果:
火狐: TZ = "EDT"
苹果浏览器: TZ = "EDT"
铬: TZ = "EDT"
IE: TZ = "EDT"
歌剧: TZ = "GMT-0400"
似乎与我所尝试的所有随机的亚洲和欧洲时区一样好,返回关岛的WPST(西太平洋标准时间),吉隆坡的MPST(马来半岛标准时间)等; 并且平稳地降级为GMT + 0X00表示法,其中浏览器不提供名称(例如,珀斯).
| 归档时间: |
|
| 查看次数: |
20389 次 |
| 最近记录: |