我真的需要得到赫尔辛基和莫斯科当前使用JavaScript的时间,但不管当地时区。我不知道该怎么做?也许任何人都有一个例子?无论当地时区何时获得赫尔辛基当地时间
的格式是:
2011年11月1日21时31分零零秒
谢谢。
我真的需要得到赫尔辛基和莫斯科当前使用JavaScript的时间,但不管当地时区。我不知道该怎么做?也许任何人都有一个例子?无论当地时区何时获得赫尔辛基当地时间
的格式是:
2011年11月1日21时31分零零秒
谢谢。
以下功能的工作原理,当你知道了偏移的时间提前:
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
[/编辑]
我在控制台收到以下错误“未捕获的ReferenceError:UTC是没有定义” – devjs11
编辑 - 添加更多信息(抱歉) – KevinDTimm
这不是一个正确的答案 –
您的版本完全符合我的格式。谢谢。你认为如果我只是补充抵消2(这是赫尔辛基),是足够的或需要更多的工作?像var HEL_OFF = 2; .... getLocalTime(HEL_OFF); – devjs11
@Alex - 此时此刻,这将会奏效,因为赫尔辛基目前不在夏令时,但在3月27日到10月30日之间将为+3。 –
您的代码完美无缺,但这是一个无法解决的问题感。我位于欧洲。如果我将莫斯科的偏移量设置为4,将赫尔辛基的偏移量设置为2,我会看到正确的时间,但是一些(并非全部)用户报告时间不正确,并且提前+1。这对你有意义吗?其他则表示感谢您的解决方案! – devjs11