Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   текущее время с анимацией (https://javascript.ru/forum/misc/79089-tekushhee-vremya-s-animaciejj.html)

Блондинка 06.08.2020 04:29

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

laimas 06.08.2020 05:54

Цитата:

Сообщение от Блондинка
определить время от загрузки страницы до конца суток, и обновить и потом раз в 24 часа

То есть, есть уверенность стопроцентная, что кто-то будет сидеть по 24 часа и ждать обновления? А ничего, что время не будет ждать 24 часа, оно будет тикать, и фактически уже будет другой день, а ваш "календарь" все еще живет прошлым?

Блондинка 06.08.2020 16:56

Цитата:

Сообщение от laimas (Сообщение 527639)
То есть, есть уверенность стопроцентная, что кто-то будет сидеть по 24 часа и ждать обновления? А ничего, что время не будет ждать 24 часа, оно будет тикать, и фактически уже будет другой день, а ваш "календарь" все еще живет прошлым?

Немножко не так, типа осталась открытой вкладка,и посетитель зашел через сутки-двое,в этом случае надо чтобы все компоненты даты соответсвовали сегодняшней, а время вроде тут не причём, так сказать два разных отдельных скрипта, время отдельно (часы, минуты, секунды) а один скрипт с ежесекундным обновлением это один скрипт, дата (день недели, число месяц год) с обновлением раз в сутки другой скрипт...

laimas 06.08.2020 19:16

Ну это ведь речь не об обновлении, а установке текущей даты во время активации страницы, а не то, что в начале вы написали.
Ищите Page Visibility API, оно сообщит когда вкладка стала активна, о поддержке этого API и "эмуляции" его в браузерах без поддержки.

Блондинка 06.08.2020 20:16

laimas,
пока вопрос как разделить число и год на квадратики...

laimas 06.08.2020 20:44

Цитата:

Сообщение от Блондинка
пока вопрос как разделить число и год на квадратики...

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

voraa 06.08.2020 21:27

Цитата:

Сообщение от Блондинка
пока вопрос как разделить число и год на квадратики...

<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
<body>
<style>
span.U_003A { color: #9c9c9c; }
#clock.x  span.U_003A { color: #333399; }
#clock .timer{
    display: flex;
}
#clock .timer div:nth-child(4){
    background-color: #228B22;
    color: #FFFFFF;
}
#clock .timer div:nth-child(7){
    background-color: #FF00FF;
    color: #FFFF00;
}
#clock .timer div{
    border: 1px solid #0000FF;
    display: inline-block;
    width: 16px;
    text-align: center;
    margin: 0 1.5px;
}
</style>
<span id="clock"></span>
<script type="text/javascript">
function clock() {
 var date = new Date();
 var hour=date.getHours();
 var minute=date.getMinutes();
 var sec=date.getSeconds();
 var day=date.getDate();
 var month=date.getMonth();
 var year=date.getFullYear();
 var weekday=date.getDay();
 var monthes=new Array ("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря");
 var dayNames = new Array("Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота");
 function numberWrapInDiv(num)
 {
   return [...num.toString().padStart(2, "0")].map(num => `<div>${num}</div>`).join("")
 }

 [hour, minute, sec, day, year] = [hour, minute, sec, day, year].map(numberWrapInDiv)
document.getElementById("clock").innerHTML = "<div class='timer'>"+hour+" <span class='U_003A'>:</span> "+minute+" <span class='U_003A'>:</span> "+sec+"</div>"
	+dayNames[weekday]+"<br/>"
	+"<div class='timer'>"+day+" "+monthes[month]+" "+year+"<div>г.</div>"+"</div>";
document.getElementById("clock").classList.toggle("x");
window.setTimeout("clock()",500);
}
clock();
</script>
</body>
</html>

Блондинка 06.08.2020 22:35

Блииин, достало это раритетное дерьмо, как обычно только белый экран...

Блондинка 07.08.2020 21:14

Цитата:

Сообщение от voraa (Сообщение 527668)
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
<body>
<style>
span.U_003A { color: #9c9c9c; }
#clock.x  span.U_003A { color: #333399; }
#clock .timer{
    display: flex;
}
#clock .timer div:nth-child(4){
    background-color: #228B22;
    color: #FFFFFF;
}
#clock .timer div:nth-child(7){
    background-color: #FF00FF;
    color: #FFFF00;
}
#clock .timer div{
    border: 1px solid #0000FF;
    display: inline-block;
    width: 16px;
    text-align: center;
    margin: 0 1.5px;
}
</style>
<span id="clock"></span>
<script type="text/javascript">
function clock() {
 var date = new Date();
 var hour=date.getHours();
 var minute=date.getMinutes();
 var sec=date.getSeconds();
 var day=date.getDate();
 var month=date.getMonth();
 var year=date.getFullYear();
 var weekday=date.getDay();
 var monthes=new Array ("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря");
 var dayNames = new Array("Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота");
 function numberWrapInDiv(num)
 {
   return [...num.toString().padStart(2, "0")].map(num => `<div>${num}</div>`).join("")
 }

 [hour, minute, sec, day, year] = [hour, minute, sec, day, year].map(numberWrapInDiv)
document.getElementById("clock").innerHTML = "<div class='timer'>"+hour+" <span class='U_003A'>:</span> "+minute+" <span class='U_003A'>:</span> "+sec+"</div>"
	+dayNames[weekday]+"<br/>"
	+"<div class='timer'>"+day+" "+monthes[month]+" "+year+"<div>г.</div>"+"</div>";
document.getElementById("clock").classList.toggle("x");
window.setTimeout("clock()",500);
}
clock();
</script>
</body>
</html>

На экране андроид 4, 15 года скрипт не работает, белый экран...

voraa 08.08.2020 22:30

Цитата:

Сообщение от Блондинка
На экране андроид 4, 15 года скрипт не работает, белый экран...

Наверно дело не в Андроиде, а в том, какой браузер и какой версии.
Сейчас проверил. У меня Андроид 8, Хром 84 (регулярно обновляется).
Все работает.

А ваш первоначальный вариант работает?


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