Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Почему new Date() не перезаписывается поверху? (https://javascript.ru/forum/events/66251-pochemu-new-date-ne-perezapisyvaetsya-poverkhu.html)

sovsem-nub 03.12.2016 19:58

Почему new Date() не перезаписывается поверху?
 
Есть простой кодик. Хочу каждую секунду добавлять к часикам секунду и выводит на экран. Цифра меняется, а дата которая должна вытекать из этой цифры почему-то нет... https://jsfiddle.net/65h877xc/

<div id="timestamp">0</div>


<script>

var timestamp=0;

var timerId = setInterval(function() {
  timestamp=timestamp+1;

  document.getElementById('timestamp').innerHTML=new Date(timestamp)+"||||"+timestamp;
}, 1000);

</script>

sovsem-nub 03.12.2016 21:53

буду секунду тогда прибавлять
<div id="timestamp">0</div>

<script>
var timestamp=0;

lll=new Date(timestamp);
// начать повторы с интервалом 1 сек
var timerId = setInterval(function() {
 lll.setSeconds(lll.getSeconds() + 1);
  document.getElementById('timestamp').innerHTML=lll;
}, 1000);
</script>


вот полный код, который берет API времени со стороннего сервера и начинает к нему прибавлять секунду https://jsfiddle.net/qLcqueov/4/

таким образом можно сделать часы не привязанные к времени на компьютере.

рони 03.12.2016 22:23

Цитата:

Сообщение от sovsem-nub
буду секунду тогда прибавлять

не будешь, это не возможно

sovsem-nub 04.12.2016 10:24

Цитата:

Сообщение от рони (Сообщение 436983)
не будешь, это не возможно

как зная секунды с 1970 года вывести время без учета часового пояса?

var utcDate = new Date(Date.UTC(96, 11, 1, 0, 0, 0)); вот это не принимает мой timestamp

рони 04.12.2016 11:06

Цитата:

Сообщение от sovsem-nub
вывести время без учета часового пояса?

:-? .toUTCString()

рони 04.12.2016 11:48

sovsem-nub,
<div id="timestamp">0</div>

<script>
var timestart = performance.now();
var d = Date.UTC(96, 11, 1, 0, 0, 0);
// начать повторы с интервалом 1 сек
var timerId = setInterval(function() {
  var x = (performance.now()- timestart)|0;
  document.getElementById('timestamp').innerHTML= new Date(d + x).toUTCString() ;
}, 673);//значение интервала не важно, лучше меньше 1000
</script>

sovsem-nub 04.12.2016 13:01

то есть если 1000 миллисекунд складывать 60 раз, то не факт, что минута получится? какая там погрешность набегает?

и как получить время если изначально только секунды
var d = Date.UTC(1480845285504); не работает

рони 04.12.2016 13:19

Цитата:

Сообщение от sovsem-nub
только секунды

* 1000

рони 04.12.2016 13:23

Цитата:

Сообщение от sovsem-nub
то есть если 1000 миллисекунд складывать 60 раз, то не факт, что минута получится? какая там погрешность набегает?

реальная-частота-срабатывания

sovsem-nub 04.12.2016 14:15

Цитата:

Сообщение от рони (Сообщение 437018)
* 1000

var d = Date.UTC(1480845285504000);

Invalid Date :-?

рони 04.12.2016 14:34

sovsem-nub,
var d = 1480845285504;

sovsem-nub 04.12.2016 19:59

Спасибо! Тогда с поправками Рони получилось так https://jsfiddle.net/qLcqueov/6/
надеюсь теперь часы правильные :)

<div id="timestamp">0</div>


<script>
var timestamp=0;

function time100(){
time100.cb=function(t,r){

//alert("На сервере"+new Date(t)+" На компью "+new Date(r))
timestamp=t;

};

}
time100();
i=document.createElement("script")
i.setAttribute("src", "//time100.ru/api.php?type=cb&t="+new Date().getTime())
j=document.getElementsByTagName("head").item(0)
j.appendChild(i)


window.onload = function() {
var timestart = performance.now();

// начать повторы с интервалом 1 сек
var timerId = setInterval(function() {
  var x = (performance.now()- timestart)|0;
  document.getElementById('timestamp').innerHTML= "гринвич " +new Date(timestamp + x).toUTCString() +"<br>местное "+ new Date(timestamp + x) +"<br>на компе "+ new Date() ;
}, 673);//значение интервала не важно, лучше меньше 1000
}
</script>


Соответственно, если поменяете время на своем компе, то поменяется только последнее значение.


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