Javascript 获取赫尔辛基当地时间,而不考虑当地时区

Javascript 获取赫尔辛基当地时间,而不考虑当地时区,javascript,date,time,timezone,Javascript,Date,Time,Timezone,我真的需要使用javascript获取赫尔辛基和莫斯科的当前时间,但不考虑当地时区。我想知道怎么做?也许有人举个例子 格式为: 2011年11月1日 21:31:00 多谢各位 // create Date object for current location d = new Date(); // convert to msec since Jan 1 1970 localTime = d.getTime(); // obtain local UTC offset and convertto

我真的需要使用javascript获取赫尔辛基和莫斯科的当前时间,但不考虑当地时区。我想知道怎么做?也许有人举个例子

格式为:

2011年11月1日 21:31:00

多谢各位

// create Date object for current location
d = new Date();
// convert to msec since Jan 1 1970
localTime = d.getTime();
// obtain local UTC offset and convertto msec
localOffset = d.getTimezoneOffset() * 60000;
// obtain UTC time in msec
utc = localTime + localOffset;
// obtain and add destination's UTC time offset
// for example, Paris
// which is UTC + 1.0 hours
offset = 1.0;  
paris = utc + (3600000*offset);
// convert msec value to date string
nd = new Date(paris);
document.writeln("Paris time is " + nd.toLocaleString() + "<br>");

[/edit]

当您提前知道偏移量时,以下功能起作用:

var MOSCOW_OFF = 4; // hours
var MONTHS = ["January", "February", "March", "April", "May", "June", "July", 
              "August", "September", "October", "November", "December"];

// desired format => November 1, 2011 21:31:00
function getLocalTime(offset) {
    var d = new Date();
    d.setTime((new Date().getTime()) + 
              (d.getTimezoneOffset() * 60 * 1000) + // local offset
              (1000 * 60 * 60 * offset)); // target offset
    return MONTHS[d.getMonth()] + " " + d.getDate() + ", " + 
            d.getFullYear() + " " + d.toTimeString().split(" ")[0];
}

getLocalTime(MOSCOW_OFF); // => "November 2, 2011 01:22:27"

上述方法适用于莫斯科,莫斯科不再采用夏令时,但您需要知道每年的什么时候为赫尔辛基制定一个同等通用的解决方案。

我在控制台中遇到以下错误“未捕获参考错误:未定义utc”@lwburk-为所需时区添加了偏移量行您的第一个代码似乎工作正常,但我不了解如何实现第二部分,即您所说的可能更好的部分?您的版本与我的格式完全匹配。非常感谢。你认为如果我加上偏移量2(赫尔辛基)就足够了还是需要更多的工作?类似于var HEL_OFF=2。。。。getLocalTime(HEL_OFF)@Alex-在这个时刻,这将起作用,因为赫尔辛基目前不是夏令时,但在3月27日到10月30日之间将是+3。您的代码工作得很好,但这里有一个问题没有意义。我在欧洲。如果我将莫斯科偏移量设置为4,将赫尔辛基设置为2,我会看到正确的时间,但一些(并非所有)用户报告时间不正确,并且时间提前了+1。这对你有意义吗?另外,谢谢你的解决方案!
var MOSCOW_OFF = 4; // hours
var MONTHS = ["January", "February", "March", "April", "May", "June", "July", 
              "August", "September", "October", "November", "December"];

// desired format => November 1, 2011 21:31:00
function getLocalTime(offset) {
    var d = new Date();
    d.setTime((new Date().getTime()) + 
              (d.getTimezoneOffset() * 60 * 1000) + // local offset
              (1000 * 60 * 60 * offset)); // target offset
    return MONTHS[d.getMonth()] + " " + d.getDate() + ", " + 
            d.getFullYear() + " " + d.toTimeString().split(" ")[0];
}

getLocalTime(MOSCOW_OFF); // => "November 2, 2011 01:22:27"