0

对于我的一个项目,我需要一个解决方案来显示几个特定城市(伦敦、纽约、香港)的准确(日期和)时间以及当地时间——无论我在世界的哪个地方执行那个 JavaScript 代码。我需要在没有互联网连接的情况下使用 JavaScript(离线 HTML)。

var myowntime = new Date();
var myhours = myowntime.getHours();
var myminutes = myowntime.getMinutes();
var utch = myowntime.getUTCHours();
var utcm = myowntime.getUTCMinutes();
var localdst;

var london_hours, london_minutes;
var ny_hours, ny_minutes;
var hk_hours, hk_minutes;

// Local Daylight Saving and TimeZone calculation

// local DST first
var jan = new Date(myowntime.getFullYear(), 0, 1);
var jul = new Date(myowntime.getFullYear(), 6, 1);
if (myowntime.getTimezoneOffset() < Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset())) {
  localdst = true;
} else {
  localdst = false;
}
var dst_hours = 0;
if (localdst) {
  dst_hours = (Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset() - myowntime.getTimezoneOffset())/60;
}
mydiff_utc_hours = -myowntime.getTimezoneOffset()/60;
if (localdst) {
  mydiff_utc_hours -= dst_hours;
}

london_hours = utch;
if (localdst) {
  london_hours += dst_hours;
}
ny_hours = utch - 5;
if (localdst) {
  ny_hours += dst_hours;
}
hk_hours = utch + 8; // no DST as far as I know

if (hk_hours > 23) {
  hk_hours -= 24;
}
if (hk_hours < 0) {
  hk_hours += 24;
}

if (ny_hours > 23) {
  ny_hours -= 24;
}
if (ny_hours < 0) {
  ny_hours += 24;
}

if (london_hours > 23) {
  london_hours -= 24;
}
if (london_hours < 0) {
  london_hours += 24;
}

问题...我只能检测到我当地的 DST,我假设它是 +60 分钟。但我也将它用于伦敦和纽约时间(这是一个错误的假设)。

如何计算其他时区的 DST 小时值以及 DST 在这些时区适用的日期。我很高兴看到一个 JS 代码的工作示例......

PS:我只使用 MS Windows 环境。这些操作系统在其深处的某个地方保存了所有时区 DST 信息......是否可以通过 JS 或 VBScript 从那里以某种方式收集这些信息(WMI?)?

先感谢您,

奥利弗

4

1 回答 1

0

也许看看这个库:

http://momentjs.com/timezone/

看起来它本身就可以为您提供所需的东西。

于 2013-08-14T12:59:02.957 回答