% просмотра времени видео

Nelirr

Пользователь
Регистрация
23.03.2021
Сообщения
86
Благодарностей
7
Баллы
8
Всем привет
Столкнулся с нетривиальной задачей.
Есть видео, длиной час видео
Задается время просмотра видео от и до в минутах.
Из этого промежутка берется случайное число - это и есть % просмотра видео.
Это понятно как сделать.
---
Что не понятно -
Пробую сделать так:
C#:
HtmlElement TotalTime = tab.FindElementByXPath("//span[contains(@class, 'time-second')]|//span[contains(@class, 'ytp-time-duration')]",0);
string TotalTimeVideo = TotalTime.GetAttribute("innertext");

//Тут парсинг общего времени видео в формате hh:mm:ss
DateTime TotalVideoTime = DateTime.ParseExact(TotalTimeVideo, format, System.Globalization.CultureInfo.InvariantCulture);
project.SendInfoToLog("Общее время видео - " + TotalTimeVideo,true);

//Время просмотра видео
System.Threading.Thread.Sleep(2000);

DateTime dt = DateTime.Now.AddMinutes(rnd.Next(30,60));
DateTime now = DateTime.Now;

project.SendInfoToLog("Вычисляем нужное время",true);

var MinutesPass = (now - dt).Minutes;
Получаю ошибку, что значение не распознано как действительное значение DateTime.

Дальше, в чем еще вопрос:
Как я понял - нужно спарсить общее время, и время прошедшее от начала видео.. вроде ок.
Я не могу въехать как делать операции вычисления со временем дальше.
Те как мне перевести полученное время просмотра видео (например с начала просмотра прошло 00:15:34) в %ы ?

Те как это увязать с %ми?
 

404

Client
Регистрация
23.09.2011
Сообщения
112
Благодарностей
58
Баллы
28
Для расчетов проще перевести время в секунды. С секундами произвести необходимые вычисления и, если понадобится, снова перевести время в формат чч:мм:сс.

Пример перевода времени в секунды:
C#:
// в переменной time могут быть только секунды(25) либо минуты и секунды(12:25) или еще и часы (1:12:25)
string str = project.Variables["time"].Value;
string[] array = str.Split(':');
int m,h;
    if (array.Length ==1){
        return array[0];
    }else{
        if(array.Length ==2){
            m = int.Parse( array[0]);
            return (m*60)+int.Parse( array[1]);
        }else{
            if(array.Length ==3){
                h = int.Parse( array[0]);
                m = int.Parse( array[1]);
            return (((h*60)+m)*60)+int.Parse( array[2]);
            }
        }
    }
 
  • Спасибо
Реакции: Nelirr

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)