2014-11-05 40 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)。