【发布时间】:2011-12-19 18:50:54
【问题描述】:
我真的需要使用 javascript 获取赫尔辛基和莫斯科的当前时间,但不管当地时区如何。我想知道怎么做?也许有人有一个例子?
格式为:
2011 年 11 月 1 日 21:31:00
谢谢。
【问题讨论】:
标签: javascript date time timezone
我真的需要使用 javascript 获取赫尔辛基和莫斯科的当前时间,但不管当地时区如何。我想知道怎么做?也许有人有一个例子?
格式为:
2011 年 11 月 1 日 21:31:00
谢谢。
【问题讨论】:
标签: javascript date time timezone
当您提前知道偏移量时,以下功能起作用:
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"
上述方法始终适用于莫斯科,它不再遵守夏令时,但您需要了解为赫尔辛基制定等效通用解决方案的时间。
【讨论】:
// 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>");
(抱歉,不知道赫尔辛基偏移量,大概是2?)
请注意,getTimezoneOffset() 的负返回值表示当前位置早于 UTC,而正值表示该位置晚于 UTC。
[编辑]
这可能会更好:(请注意,您必须自己从recv'd helsinki 变量中操作格式
function getTZTime (tzOffset) {
local = new Date();
off = ( local.getTimezoneOffset() ) * 60 * 1000;
timeStamp = local.getTime() + off;
off += 1000 * 60 * 60 * tzOffset;
nd = new Date();
nd.setTime( timeStamp );
return (nd);
}
helsinki = getTZTime (2); // Helsinki is 2 TZ's from GMT
[/编辑]
【讨论】: