На основе даты и времени показать / скрыть элемент - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу показать и скрыть элемент на странице, основываясь на нескольких датах и ​​времени. Например, у меня есть окно с предупреждением, которое я хочу показать на следующие даты 4/28, 4/29 и 4/30 с 9:00 до 12:00 по тихоокеанскому времени. И спрятаться за оставшиеся часы. Размещенный код работает для времени открытия и закрытия, но я не уверен, как добавить несколько дат. Или я просто что-то упускаю.

Редактировать: Я сосу на jQuery / JavaScript.

HTML

<div class="open openstatus">Open</div>
<div class="closed openstatus">Closed</div>

JS

var now = new Date(),
  currentDay = now.getDay(),
  openTime = new Date(
    now.getFullYear(),
    now.getMonth(),
    now.getDate(),
    13,
    02
  ),
  closeTime = new Date(
    now.getFullYear(),
    now.getMonth(),
    now.getDate(),
    13,
    03
  ),
  open = now.getTime() > openTime.getTime() && now.getTime() < closeTime.getTime();

  if (currentDay !== 6 && currentDay !== 0 && open) {
      $('.openstatus').toggle();
  }

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

Я бы сделал что-то вроде этого:

HTML

<div id="alertBox">My alert box</div>

JAVASCRIPT

function myFunc(){

    var d = new Date(); //client Date
    d.setMinutes(d.getMinutes() + d.getTimezoneOffset()); //To get current GMT time
    d.setHours(d.getHours() - 8); // This is time in PST

    var day = d.getDay(),
        month = d.getMonth(),
        hours = d.getHours(),
        dateOfMonth = d.getDate();

    var prohibbittedMonth = 4;
    var prohibbittedDates =[28, 29, 30];
    var showAlertBox = false;

    if(day === 0 || day === 6){
        showAlertBox = true; // If the day is Saturday or Sunday
    }else if(month = prohibbittedMonth && prohibbittedDates.includes(dateOfMonth) && !(hours >= 0 && hours <9)){
        showAlertBox = true;     
    }
     // You may combine the above two condition in a single line. I have just separated them for better readability.

    if(!showAlertBox){
        document.getElementById('alertBox').style.display = "none";  //You may use your jquery here if you like
    }else{
        document.getElementById('alertBox').style.display = ""; //You may use your jquery here if you like
    }
}

myFunc();
0 голосов
/ 27 апреля 2020

Не можете ли вы добавить что-то вроде этого currentDate = now.getDate ();

if (currentDay! == 6 && currentDay! == 0 && open && (currentDate == 28 | | currentDate == 29 || currentDate == 30) )

Проверяет, является ли currentDate 28 или 29 или 30.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...