javascript:如何计算全球不同城市的确切日期和时间

javascript:如何计算全球不同城市的确切日期和时间,javascript,datetime,dst,timezone-offset,Javascript,Datetime,Dst,Timezone Offset,对于我的一个项目,我需要有一个解决方案来显示两个已定义城市(伦敦、纽约、香港)的准确(日期和)时间以及本地时间——无论我在世界上的哪个地方执行JavaScript代码。 我需要在没有互联网连接的情况下使用JavaScript(脱机HTML) var myowntime=新日期(); var myhours=myowntime.getHours(); var myminutes=myowntime.getMinutes(); var utch=myowntime.getUTCHours(); va

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

var myowntime=新日期();
var myhours=myowntime.getHours();
var myminutes=myowntime.getMinutes();
var utch=myowntime.getUTCHours();
var utcm=myowntime.getUTCMinutes();
var-localdst;
var london_小时,london_分钟;
变量ny_小时,ny_分钟;
var hk_小时,hk_分钟;
//本地夏令时和时区计算
//本地DST优先
var jan=新日期(myowntime.getFullYear(),0,1);
var jul=新日期(myowntime.getFullYear(),6,1);
if(myowntime.getTimezoneOffset()23小时){
香港时数-=24小时;
}
如果(香港时数<0){
香港时数+=24小时;
}
如果(纽约时数>23){
纽约时数-=24;
}
如果(纽约时数<0){
纽约时数+=24;
}
如果(伦敦时间>23小时){
伦敦时间-=24小时;
}
如果(伦敦时间<0){
伦敦时间+=24小时;
}
问题…我只能检测到我的本地DST,我假设它是+60分钟。 但我也在伦敦和纽约时间使用它(这是一个错误的假设)

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

备注:我只在微软Windows环境下工作。这些操作系统在其深处的某个地方保存了所有时区DST信息……是否可以通过JS或VBScript从那里收集这些信息(WMI?)

提前谢谢大家,


奥利弗

也许可以看看这个图书馆:

看起来它天生就可以满足您的需要。

检查
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;
}