2014-11-05 109 views
0

我不知道为什么它不起作用? 你能帮我吗?我的setInterval未按预期工作

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); 

我不明白在巴黎可变

+4

你期望什么?什么不起作用? – plalx 2014-11-05 12:49:13

+0

这是它的工作原理:var Chipre = calcTime('gmt','+2');但如果我设置intervall它不起作用 – 2014-11-05 12:50:30

+1

人们,不要对SO的新成员如此苛刻。有代码,很明显他想要什么。 – mplungjan 2014-11-05 12:55:22

回答

1

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

你可能想这不是

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); 
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)。