对于我的一个项目,我需要有一个解决方案,以显示几个确定的城市(伦敦,纽约,香港)和当地时间的确切(日期和时间) - 无论在哪里世界我执行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;
}
问题...我只能检测到我的本地夏令时,我认为它是+60分钟。 但我也把它用于伦敦和纽约时代(这是一个错误的假设)。
如何计算其他时区的DST小时值以及DST在这些时区中应用的日期。我很高兴看到这个JS代码的工作示例...
P.S。:我只在MS Windows环境下工作。这些操作系统在其深处某处保存所有时区DST信息...是否有可能通过JS或VBScript以某种方式收集此信息(WMI?)?
提前谢谢你,
奥利弗