@galtdaniil

HTML для тильды. Как показывать блок по времени и дате с циклом в 3 дня?

Ребят, как дополнить этот с крипт для тильды, чтобы он показывал блок только на 24 часа и каждые 3 дня?
У меня автовебинарная воронка и я хочу давать доступ к записи на 24 часа. Так как воронка запускается каждые 3 дня, то и сообтветственно должен быть цикл "каждый 3ий день открывать доступ на 24 часа"

Ах, да, время открытия 13:00 по МСК. То есть сегодня (допустим) день первого веба, он проходит, в 13:00 открывается блок на сайте на 24 часа. И ровно с момента открытия, через 3 дня снова открыть в это же время. И так до бесконечности.

<script>
var newDate = new Date();
var min_time = 15;
var max_time = 22;
var time = newDate.getUTCHours();
$(document).ready(function(){
if (time < min_time || time > max_time){
$('#rec411316842').fadeOut(0);
}
});
</script>
  • Вопрос задан
  • 1022 просмотра
Пригласить эксперта
Ответы на вопрос 1
twobomb
@twobomb
$(document).ready(function(){
  var now = new Date();
  let timeOffset = now.getTimezoneOffset()*60*1000;
  let timestamp  = now.getTime();
  let timeOpen = 13 ;//открытие 13:00  
  let dateOffset = 0;//Смещение в какой из дней будет показываться 0-2 
  let daysBeetwen = 3;//Каждые 3 дня показывать
  let offset = Math.floor((timestamp-timeOffset)/86400000) % daysBeetwen;
  if( offset == dateOffset && now.getHours() >= timeOpen ||
  		offset == (dateOffset+1)%daysBeetwen && now.getHours() < timeOpen)
      $('#rec411316842').show();
  else
      $('#rec411316842').hide();  
});

P.S. Только тут не мск, а время компа юзера. Ну можешь высчитать смещение чтобы было мск. Вообще это делается на сервере, а так при желании юзер всеравно может увидить блок
p.p.s.
вычислить мск
$(document).ready(function(){
  var now =  getMSC();
  let timeOffset = now.getTimezoneOffset()*60*1000;
  let timestamp  = now.getTime();
  let timeOpen = 13 ;//открытие 13:00  
  let dateOffset = 0;//Смещение в какой из дней будет показываться 0-2 
  let daysBeetwen = 3;//Каждые 3 дня показывать
  let offset = Math.floor((timestamp-timeOffset)/86400000) % daysBeetwen;
  if( offset == dateOffset && now.getHours() >= timeOpen ||
  		offset == (dateOffset+1)%daysBeetwen && now.getHours() < timeOpen)
      $('#rec411316842').show();
  else
      $('#rec411316842').hide();  
});

function getMSC() {
    var d = new Date();
    var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
    var nd = new Date(utc + (3600000*3));
		return nd;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы