Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Дата и время для разных городов (https://javascript.ru/forum/misc/27719-data-i-vremya-dlya-raznykh-gorodov.html)

Lunozwetka 22.04.2012 18:30

Дата и время для разных городов
 
Задача стоит написать скрипт получения даты и время по разным городам(Москва, Мадрид, Токио...)
на данный момент год такой:
function clock(){ 
    var currentTime = new Date(); 
    var currentHours = currentTime.getHours(); 
    var currentMinutes = currentTime.getMinutes(); 
    var currentSeconds = currentTime.getSeconds(); 
    currentMinutes = (currentMinutes < 10 ? "0" : "") + currentMinutes; 
    currentSeconds = (currentSeconds < 10 ? "0" : "") + currentSeconds; 
    $('#hour_min').text(currentHours + ':' + currentMinutes); 
    $('#sec').css({"font-size":"9px", "vertical-align":"text-top"}).text(currentSeconds); 
} 
var days = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'];  
var months = ['января', 'Февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 
              'августа', 'сентября', 'октября', 'ноября', 'декабря']; 
$(document).ready(function() { 
console.log(1);
   var currentTime = new Date();
   var currentDay = days[currentTime.getDay()];
   var currentDate = currentTime.getDate();
   var currentMonth = months[currentTime.getMonth()];
   var currentYear = currentTime.getFullYear(); 
   $('#date').text(currentDay + ' ' + currentDate + ' ' + currentMonth + ' ' + currentYear + 'г'); 
   clock();
   window.setInterval(clock, 1000);
});

Время по другим городам я хотела реализовать сложением и вычитанием часового пояса от времени по Москве.
Проблема в том, что данный скрипт получает системное время с пк пользователя, а у него может быть не Московское время.
Подскажите как решить эту проблему? или я изначально делаю не так?

DjDiablo 22.04.2012 18:41

Бери время с сервера.

Самый простой путь (пример на php).
realtime = <?php echo time(); ?>
    setInterval("realtime++", 1000);

Здесь ты создала что то вроде своих собственных часов,
однако меня терзают смутные сомнения что эти часы будут идти точно на всех браузерах.

несколько более замороченный путь.
Выяснить разницу между временем на сервере и клиенте,
а затем брать клиентское время, и зная разницу приводить его к серверному времени.

Помимо прочего в javascripte уйма методов работы со временем, но все они привязаны к часам у пользователя, если у него неверно то неверно и на вашей странице
Вас должны заинтерисовать методы возвращающие Всеми́рное координи́рованное вре́мя.

getUTCDate() Возвращает день месяца (1-31) в соответствии с UTC
getUTCDay() Возвращает день недели (0-6) в соответствии с UTC
getUTCMonth() Возвращает месяц (0-11) в соответствии с UTC
getUTCFullYear() Возвращает число года в соответствии с UTC
getUTCHours() Возвращает время в часах (0-23) согласно UTC
getUTCMinutes() Возвращает минуты (0-59) согласно UTC
getUTCSeconds() Возвращает секунды (0-59) согласно UTC
getUTCMilliseconds() миллисекунды
ещё UTC время можно посчитать utc = d.getTime() + (d.getTimezoneOffset() * 60000);

Рекомендую делать ставку всё же на серверное время.

Octane 22.04.2012 18:50

Есть же методы получить UTC время на клиенте http://javascript.ru/Date


Часовой пояс GMT +3, время: 15:02.