Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Часы на JS с Московским временем (https://javascript.ru/forum/misc/30658-chasy-na-js-s-moskovskim-vremenem.html)

ŞΘLƉiΞR 11.08.2012 11:42

Часы на JS с Московским временем
 
Здраствуйте! Нужна помощь. Т.к. я только начинаю верстать JS, знаний у меня почти нуль, то приходится обращаться на ваш форум.

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

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

Вот прпример найденного:
<script type="text/javascript">
 function startTime()
 {
 var tm=new Date();
 var h=tm.getHours();
 var m=tm.getMinutes();
 var s=tm.getSeconds();
 m=checkTime(m);
 s=checkTime(s);
 document.getElementById('txt').innerHTML=h+":"+m+":"+s;
 t=setTimeout('startTime()',500);
 }
 function checkTime(i)
 {
 if (i<10)
 {
 i="0" + i;
 }
 return i;
 }
 </script>
<span id="txt"></span>


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

oneguy 11.08.2012 15:07

Ваш скрипт и так показывает местное время согласно пользовательских настроек, поскольку использованы методы вида getHours, а не getUTCHours.
Если нужно показывать московское время для всех пользователей, то нужно вместо var tm=new Date писать var tm=new Date(Date.now()+14400000) и вместо getHours, getMinutes, getSeconds писать getUTCHours, getUTCMinutes, getUTCSeconds.

ŞΘLƉiΞR 11.08.2012 16:48

Спасибо огромное!

Aetae 11.08.2012 17:13

Я бы сделал так:
<script type="text/javascript">
 
function moscowTime() {
	var d = new Date();
	d.setHours( d.getHours() + 4, d.getMinutes() + d.getTimezoneOffset()  );
	return d.toTimeString().substring(0,8);
}
 
onload = function () {
 
  setInterval(function () {
    document.getElementById("txt").innerHTML = moscowTime();
  }, 100);
}
</script>
<span id="txt"></span>

Не сказать что лучше, но короче.)

fabrique 01.03.2013 12:44

А как сделать что бы часы были без секунд... что бы просто две точки мигали?
Помогите плз.

рони 01.03.2013 13:00

fabrique,
:cray:
<!DOCTYPE HTML>

<html>

<head>
  <title></title>
</head>

<body>
<span id="txt"></span>
<script type="text/javascript">

function moscowTime() {
	var d = new Date();
	d.setHours( d.getHours() + 4, d.getMinutes() + d.getTimezoneOffset()  );
    var reg = d.getSeconds()%2;
    var time = d.toTimeString().substring(0,5)
    reg && (time = time.replace(':',' '))
    return time;
}

onload = function () {

  setInterval(function () {
    document.getElementById("txt").innerHTML = moscowTime();
  }, 100);
}
</script>


</body>

</html>

fabrique 01.03.2013 19:47

рони, ну а где мне еще советы выпрашивать, как не здесь?)) спасибо!))

avanesov89 14.03.2016 11:56

Цитата:

Сообщение от Aetae (Сообщение 196680)
Я бы сделал так:
<script type="text/javascript">
 
function moscowTime() {
	var d = new Date();
	d.setHours( d.getHours() + 4, d.getMinutes() + d.getTimezoneOffset()  );
	return d.toTimeString().substring(0,8);
}
 
onload = function () {
 
  setInterval(function () {
    document.getElementById("txt").innerHTML = moscowTime();
  }, 100);
}
</script>
<span id="txt"></span>

Не сказать что лучше, но короче.)

Скажите, а как вывести два города одновременно?

Скопировал этот скрипт два раза, заменил вывод айди, изменил moscowTime на gonkongTime, но в итоге он мне показывает только время Гонконга, а московское время он скрыл.

Конфликт скриптов типа?

laimas 14.03.2016 12:23

рони,
не правильно часы показывают, спешат на час )

destus 14.03.2016 12:45

laimas,
Это потому что законы о переводе с зимнего на летнее меняются быстрее, чем пишутся скрипты. С 26 октября 2014 года Москва соответствует UTC+3, с 27 марта 2011 года по 25 октября 2014 года соответствовала UTC+4.


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