Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Работа с календарем (https://javascript.ru/forum/misc/69197-rabota-s-kalendarem.html)

Emil12345 05.06.2017 13:25

Работа с календарем
 
Есть блок div
размером 100 на 100
Если сегодня понедельник, вторник, среда или четверг, и время с 17:00 до 23:00, или пятница, суббота или воскресенье и время с 17:00 до 00:00 То он зеленый,
иначе он красный.
Как это сделать?

ksa 05.06.2017 13:40

Цитата:

Сообщение от Emil12345
Как это сделать?

Как вариант завести массив объектов такого вида

[
   <день_недели>: {tStart: <время_начала>, tStop: <время_окончания>, color: <код_цвета>}
]

Потом по текущей дате узнавать тот день недели... По текущему времени проверять попадание в интервал...
Если попали - брать нужный код цвета.

Emil12345 05.06.2017 13:47

Спасибо большое

laimas 05.06.2017 14:32

Цитата:

Сообщение от ksa
Как вариант завести массив объектов

Не надо никакого массива. Воскресенье, это 0, суббота - 6. Следовательно хватит условия:

(!(day % 6) && time >= 1020 || !time) || time >= 1020 && time <=  1380 ? "green" : "red"

j0hnik 05.06.2017 15:37

<head>
	<meta charset="utf-8">
</head>
<body>
	<style>
		#id{
			width: 100px;
			height: 100px;
			background-color: red;
	</style>
	<div id="id"></div>
	<script>
	var now = new Date();
	if (now.getHours()>=17 && now.getHours()<23 || (now.getDay()==0 || now.getDay()==5 || now.getDay()==6) && now.getHours()>=17 ) document.getElementById("id").style.backgroundColor ="green";
	</script>
</body>

рони 05.06.2017 15:39

Цитата:

Сообщение от j0hnik
now.getDay()==(0||6||5)

:blink:

laimas 05.06.2017 15:40

Цитата:

Сообщение от j0hnik
now.getHours()>=17 && now.getHours()<23

А верно ли?

j0hnik 05.06.2017 15:44

Цитата:

Сообщение от laimas (Сообщение 454566)
А верно ли?

Да ;)

j0hnik 05.06.2017 15:45

Цитата:

Сообщение от рони (Сообщение 454565)
:blink:

Так нельзя записывать?

laimas 05.06.2017 15:46

Цитата:

Сообщение от j0hnik
Да

А если подумать?

j0hnik 05.06.2017 15:52

Цитата:

Сообщение от laimas (Сообщение 454571)
А если подумать?

часы с 17 до 23
например 18
(18>= 17 и 18< 23) верно!

опишите подробней ваши сомнения :blink:

j0hnik 05.06.2017 15:55

Цитата:

Сообщение от рони (Сообщение 454565)
:blink:

кажись нельзя :cray: по правилам международного стандарта??
или вы первый раз такую запись видите?

рони 05.06.2017 16:01

j0hnik,
пока нельзя так в js

рони 05.06.2017 16:07

j0hnik,
ваша мечта в конце списка :)

j0hnik 05.06.2017 16:08

Цитата:

Сообщение от рони (Сообщение 454578)
j0hnik,
пока нельзя так в js

где про это можно подробней глянуть не подскажите?
просто в консоле ошибок нет, да простой пример пробовал.
alert(6 ==(0||6||1)); // true
alert(6 ==(0||7||1)); // false

laimas 05.06.2017 16:09

Цитата:

Сообщение от j0hnik
опишите подробней ваши сомнения

Не известно что по мнению автора есть "до", не дай бог "по".

рони 05.06.2017 16:11

j0hnik,
:-?
alert(6 ==(0||1||6));


alert(6 ==(1||6));

рони 05.06.2017 16:22

j0hnik,
https://learn.javascript.ru/logical-ops
Цитата:

Логическое ИЛИ возвращает первое попавшееся если оно может быть преобразовано к true;
цепочка 0||6||1 вернёт 6
1||6||0 вернёт 1

j0hnik 05.06.2017 16:24

Цитата:

Сообщение от рони (Сообщение 454584)
j0hnik,
https://learn.javascript.ru/logical-ops


цепочка 0||6||1 вернёт 6
1||6||0 вернёт 1

Вы правы друг мой! как бы вы написали грамотно :write: и коротко нужное выражение?

рони 05.06.2017 17:11

j0hnik,
кафе работает с 17 до 23
пятница, суббота, воскресенье до полуночи
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
</head>
<body>
  <style>
    #id{
      width: 100px;
      height: 100px;
      background-color: red;}
  </style>
  <div id="id"></div>
  <script>
   var a = new Date,
        d = a.getHours(),
        a = a.getDay(),
        c = 17 <= d;
    a && 5 > a && (c = c && 23 > d);
    c && (document.getElementById("id").style.backgroundColor = "green")

  </script>
</body>
</html>

laimas 05.06.2017 20:20

Я то думаю, чего вы тут о трех днях толкуете, перечитал, а там пятница, суббота или воскресенье :D


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