2014-11-05 2 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); 

я не получаю значение calcTime в переменном Париже

+4

Что вы ожидаете от этого? Что не работает? – plalx

+0

Вот как это работает: var Chipre = calcTime ('gmt', '+2'); но если я устанавливаю интервал, это не работает –

+1

Люди, не будьте так суровы на новом члене SO. Был код, и было очевидно, чего он хотел. – mplungjan

ответ

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

Смежные вопросы