我的setInterval没有按预期工作

时间:2014-11-05 12:47:29

标签: javascript

我不知道为什么它不起作用? 你能帮我吗?

function calcTime(city, offset) {
  d = new Date();
  utc = d.getTime() + (d.getTimezoneOffset() * 60000);
  nd = new Date(utc + (3600000*offset));
  return nd.toLocaleString();
}

var Paris =setInterval( function() { calcTime('gmt', '+1'); }, 500 );

我没有在Paris变量中获得calcTime的值

2 个答案:

答案 0 :(得分:1)

setInterval返回一个间隔指针,而不是函数的值。

你可能想要这个

function calcTime(city, offset) {
  var d = new Date();
  var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
  var nd = new Date(utc + (3600000*offset));
  return nd.toLocaleString();
}
var parisTId =setInterval( function() { 
  document.getElementById("paris").innerHTML=calcTime('gmt', '+1'); 
}, 500 );

答案 1 :(得分:0)

您似乎正在尝试将当前时间放在具有特定偏移量的小时(大概是小数小时,因为并非所有时区偏移都是完整小时)。你可以简单地使用:

来做到这一点
// Offset is per javascript timezone offset, i.e. minutes to subtract
// from UTC to get local time, so for a place that is UTC+01:00 use -60
function calcTime(offset) {
  var d = new Date();
  d.setMinutes(d.getMinutes() + d.getTimezoneOffset() - offset);
  return d;
}

请注意,使用 toLocaleString 会报告用户当前位置的时区,而不是调整日期的时区,因此您可能希望构建自己的具有正确偏移量的字符串(说基于ISO 8601)。