За последние 24 часа нас посетили 20918 программистов и 1111 роботов. Сейчас ищет 391 программист ...

Как выполнить нужные условия до и после определенной даты JS?

Тема в разделе "JavaScript и AJAX", создана пользователем Bridun, 7 дек 2018.

Метки:
  1. Bridun

    Bridun Новичок

    С нами с:
    2 окт 2017
    Сообщения:
    71
    Симпатии:
    1
    Нашел небольшой скрипт, который автоматически запускает видео с Youtube в определенное время (автовебинар). Например, в 20:00, 22:00 и тд . Если пользователь открыл видео в 20:10, то плеер автоматически мотает видео на 10-ю минуту. Не разберусь, как давать разный набор инструкций, если пользователь открыл страницу:

    до начала вебинара (до 19:55) (пришел раньше)
    в течение 20 минут после старта (20:20) (пришёл вовремя)
    позже 30 минут после старта.


    В коде есть комментарий капсом, где я пытаюсь создавать разный набор инструкций.

    Благодарю за помощь. Новичок, делаю методом научного тыка. Помогите дописать код для себя.

    <script src="playerjs.js" type="text/javascript"></script>
    <div id="player"></div>
    <button onclick="seekToTime()">Перейти</button>

    Код (Javascript):
    1. /*
    2. var now = new Date(); // Текущая дата
    3.        var event_date = new Date ("Jul 17 2018 11:30:00 GMT+0300"); // дата события (+ часовой пояс, крайне обязательно)
    4.        var dif_time = now.getTime() - event_date.getTime(); // разность в милисикундах по UTC (время приведено в один часовой пояс, крайне удачно)
    5.        var duration = 60 * 60 * 1000; // время длительности вебинара в милисекундах
    6.        switch(true)
    7.        {
    8.            case dif_time < 0:
    9.             // действия до события
    10.             break;
    11.           case dif_time >= 0 && dif_time < duration:
    12.             // действия во время события до окончания, (dif_time / 1000) - куда перематывать
    13.             break;
    14.           case dif_time >= duration:
    15.             // действия после окончания события
    16.             break;
    17.        }
    18.  
    19.  
    20.      
    21.     var event_date = new Date ("Jul 17 2018 11:30:00 GMT+0300");
    22.      
    23.      
    24.     var now = new Date(); // Текущая дата
    25.   var event_date = new Date((now.getFullYear() + '.' + (now.getMonth() + 1) + '.' + now.getDate()) + " 11:30:00 GMT+0300");
    26.      
    27.    
    28.      
    29. Кейс case dif_time < 0 убирается и вместо него добавляются такие кейсы:    
    30.      
    31. var before_time = 30 * 60 * 1000; // время длительности предстартового периода в милисекундах
    32.   switch(true)
    33.   {
    34.      case  -dif_time > before_time:
    35.         // действие до начала предстартового периода
    36.          break;
    37.      case  -dif_time <= before_time && dif_time < 0:
    38.         // действие в предстартовый период
    39.          break;
    40.         ....
    41.   }    
    42.    
    43. */
    44.  
    45.  
    46.  
    47.    var player = new Playerjs({id:"player", poster: "people.png", file:"video.mp4"});
    48.    console.log(player.api("id"));
    49.      function startWebinar(){
    50.      player.api("play");
    51.      }
    52.       function unmute(){
    53.      player.api("unmute");
    54.      }
    55.    
    56.     function seekToTime(){
    57.     player.api("seek", playTimeOffset);
    58.     }
    59.  
    60.         //var now = new Date(); // Текущая дата
    61.        //var event_date = new Date ("Jul 17 2018 11:30:00 GMT+0300"); // дата события (+ часовой пояс, крайне обязательно)
    62.          var event_date = new Date((now.getFullYear() + '.' + (now.getMonth() + 1) + '.' + now.getDate()) + " 00:03:00 GMT+0000", 'Europe/London');
    63.        var dif_time = now.getTime() - event_date.getTime(); // разность в милисикундах по UTC (время приведено в один часовой пояс, крайне удачно)
    64.        var duration = 60 * 60 * 1000; // время длительности вебинара в милисекундах
    65.        switch(true)
    66.        {
    67.            case dif_time < 0:
    68.             // действия до события
    69.             break;
    70.           case dif_time >= 0 && dif_time < duration:
    71.             // действия во время события до окончания, (dif_time / 1000) - куда перематывать
    72.             break;
    73.           case dif_time >= duration:
    74.             // действия после окончания события
    75.      
    76.  
    77.  
    78.  
    79.     //var wHour = "23"; //час старта вебинара
    80.     //var wMinute = "20"; //минута старта вебинара
    81.     //var wTime = wHour + ":" + wMinute; //время старта вебинара
    82.     //let firstDate = wTime; //время старта вебинара
    83.     //let firstDate = event_date; //время старта вебинара  
    84.     //вычисляем разницу между текущим временем (открытия страницы) и временем старта вебинара
    85.     var currentDateTime = new Date();
    86.     var hrs = currentDateTime.getHours();
    87.     var mnts = currentDateTime.getMinutes();
    88.     var secondDate = (hrs+":"+mnts); //текущее время
    89.     let getDate = (string) => new Date(0, 0,0, string.split(':')[0], string.split(':')[1]);
    90.     let different = (getDate(secondDate) - getDate(firstDate));
    91.     let differentRes, hours, minuts;
    92.         if(different > 0) {
    93.           differentRes = different;
    94.           hours = Math.floor((differentRes % 86400000) / 3600000);
    95.           minuts = Math.round(((differentRes % 86400000) % 3600000) / 60000);
    96.             } else {
    97.               differentRes = Math.abs((getDate(firstDate) - getDate(secondDate)));
    98.               hours = Math.floor(24 - (differentRes % 86400000) / 3600000);
    99.               minuts = Math.round(60 - ((differentRes % 86400000) % 3600000) / 60000);
    100.             }
    101.     let result = hours + ':' + minuts;
    102.     var playTimeOffset = (hours*3600)+minuts*60; //разница в секундах между временем открытия страницы и временем старта вебинара для функции seekToTime (плеер принимает в секундах и бросает в нужный момент видео)
    103.     //назначаем время старта вебинара
    104.     var now = new Date(); // Текущая дата
    105.     var webinarStartTime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), wHour, wMinute, 0, 0) - now;
    106.  
    107.     var timeOfWebinar = new Date(now.getFullYear(), now.getMonth(), now.getDate(), wHour, wMinute, 0, 0);
    108.     console.log(timeOfWebinar);
    109.     console.log(currentDateTime);
    110.  
    111. //ПЫТАЮСЬ ДАТЬ РАЗНЫЙ НАБОР ИНСТРУКЦИЙ В ЗАВИСИМОСТИ ОТ ВРЕМЕНИ ОТКРЫТИЯ СТРАНИЦЫ  
    112.  
    113.                //час после вебинара
    114.                 var hourAfter = new Date();
    115.                  hourAfter = hourAfter.setHours(hourAfter.getHours() + 1);
    116.                 console.log(hourAfter, timeOfWebinar, webinarStartTime)
    117.            
    118.               //если текущее время больше на час
    119.                if (hourAfter > timeOfWebinar){
    120.                 player.api("stop");
    121.                 //alert("Вы опоздали");
    122.                 }
    123.              
    124.                 if (currentDateTime.getTime() >  timeOfWebinar.getTime())  {
    125.                 player.api("stop");
    126.                 //alert("За полчаса");
    127.              
    128.                 }
    129.              
    130.        
    131.                  //если с начала вебинара еще не прошел 1 час, то запускаемм плеер
    132.                 else{
    133.                   startWebinar();
    134.                     seekToTime();
    135.                     unmute(); //включаем звук
    136.                  
    137.                 }
    138.  
    139.  
    140.     /**
    141.      ЛОГИКА РАБОТЫ:в определенное время несколько развдень по Москве запускается воспроизведение видео через плеер.
    142.      Если пользователь открыл страницу раньше до указаного начсала ато без 5 мин, то воспроизведение не начинается автоматически,
    143.      при попытке его запустить - незапускется, а дальше продолжает показываться GIF анимация ожидания трансляции
    144.    
    145.      Если открывает позже, то плеер начинает воспроизведение видео с той минуты, с которой пользователь вошел на вебинар от его начала,
    146.      то есть с 20:00. если зашел в 20:07, то видео начинает играть с 7-ой минуты ----  по окончанию выходим в расписание
    147.    
    148.      как бы еще таймер времени сюда прикрутить
    149.      */
    150.    
    151.    
     
    #1 Bridun, 7 дек 2018
    Последнее редактирование: 7 дек 2018