Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Отслеживание дня недели и времени с выводом изображения (https://javascript.ru/forum/misc/70206-otslezhivanie-dnya-nedeli-i-vremeni-s-vyvodom-izobrazheniya.html)

wemon 19.08.2017 18:24

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


Также по возможности подскажите как вывести изображение в зависимости по времени Закрыто (красные часики)/Открыто (зеленые часики):


Всем заранее благодарен за оказанную помощь.

wemon 19.08.2017 19:55

В общем почитав немного информации пришел к такому варианту.... Подскажите если что то сделано не так или как то более умело сделать.

Для дня недели:
<script language="javascript" type="text/javascript">
now = new Date()
if (now.getDay() == 1) { document.write("• Понедельник<br>"); }
else { document.write("Понедельник<br>"); }
if (now.getDay() == 2) { document.write("• Вторник<br>"); }
else { document.write("Вторник<br>"); }
if (now.getDay() == 3) { document.write("• Среда<br>"); }
else { document.write("Среда<br>"); }
if (now.getDay() == 4) { document.write("• Четверг<br>"); }
else { document.write("Четверг<br>"); }
if (now.getDay() == 5) { document.write("• Пятница<br>"); }
else { document.write("Пятница<br>"); }
if (now.getDay() == 6) { document.write("• Субота<br>"); }
else { document.write("Субота<br>"); }
if (now.getDay() == 0) { document.write("• Воскресенье<br>"); }
else { document.write("Воскресенье<br>"); }
</script>

Для времени:
<script language="javascript" type="text/javascript">
var h=(new Date()).getHours();                 
if (h > 6 && h <  14) { document.write("• Открыто<br>"); }
else { document.write("Закрыто<br>"); }          
</script>

Соответственно для document.write("Код html + css к нему")

Nexus 19.08.2017 20:01

Цитата:

Сообщение от wemon
Для дня недели:

Этим сервер должен заниматься, а не клиент, имхо.

j0hnik 19.08.2017 21:22

<html>
<head>
	<style>
		li{
			list-style-type: none;
		}
		.active{
			list-style-type: disc;
		}
	</style>
</head>
<body>
	<ul>
		<li>Понедельник</li>
		<li>Вторник</li>
		<li>Среда</li>
		<li>Четверг</li>
		<li>Пятница</li>
		<li>Суббота</li>
		<li>Воскресенье</li>
	</ul>
</body>
<script>
var now = new Date();
var act = now.getDay()||7;
var li = document.querySelectorAll('li');
li[act-1].classList.add('active')
li[act-1].style.color = now.getHours()>18?'red':'green';
</script>
</html>

просто как пример

А так согласен с Nexus.

Rise 19.08.2017 22:35

wemon,
<style>
li {
	list-style-type: none;
}
.opened {
	color: green;
	list-style-image: url(opened.png);
}
.closed {
	color: red;
	list-style-image: url(closed.png);
}
</style>
<ul>
	<li>Понедельник</li>
	<li>Вторник</li>
	<li>Среда</li>
	<li>Четверг</li>
	<li>Пятница</li>
	<li>Суббота</li>
	<li>Воскресенье</li>
</ul>
<script>
var now = new Date(), day = now.getDay(), hours = now.getHours();
var li = document.querySelectorAll('li');
li[(day || 7) - 1].classList.add(5 < hours && hours < 14 ? 'opened' : 'closed');
</script>

wemon 20.08.2017 18:39

Цитата:

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

Rise 20.08.2017 18:50

Цитата:

Сообщение от wemon
сделать через сервер, я так понимаю он с него должен брать дату и время

в данном случае в этом нет смысла, если пользователь что-то там накрутит у себя в системе, то это его проблемы что он сам себе исказил выводимую исключительно для него информацию), но метку времени для лучшей точности можно передавать: var now = new Date(<?php echo time() * 1000 ?>)

wemon 20.08.2017 19:10

Цитата:

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

рони 20.08.2017 19:22

Цитата:

Сообщение от Rise
Подскажите как это сделать.....

Цитата:

Сообщение от Rise
var now = new Date(),

заменить на
Цитата:

Сообщение от Rise
var now = new Date(<?php echo time() * 1000 ?>)


laimas 20.08.2017 19:29

Цитата:

Сообщение от Rise
var now = new Date(<?php echo time() * 1000 ?>)

И какой в этом смысл тогда?


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