Конвертация времени в секунды C#

Регистрация
23.03.2015
Сообщения
1 170
Благодарностей
691
Баллы
113
Всем привет. Мне нужно узнать время аудиофайла в секундах. Оно у меня в формате чч:мм:сс:.мс
Какого-то готового решения как перевести такое время в секунды я не нашёл, поэтому сколхозил сам. Миллисекунды просто удалил, секунды, часы и минуты положил в переменные. В коде хочу пересчитать всё это в секунды:
C#:
int x = int.Parse(project.Variables["hh"].Value) * 3600;
int y = int.Parse(project.Variables["mm"].Value) * 60;
int z = int.Parse(project.Variables["ss"].Value);
int s = x + y + z;
project.Variables["time_audio_sec"].Value = int s;
Ткните носом где я ошибся?
Ну или может быть какой-то готовый вариант есть?
 

Oleg1987

Client
Регистрация
11.08.2014
Сообщения
1 194
Благодарностей
768
Баллы
113
C#:
int h = int.Parse(project.Variables["hh"].Value);
int m = int.Parse(project.Variables["mm"].Value);
int s = int.Parse(project.Variables["ss"].Value);
var second = new TimeSpan(h, m, s).Seconds;
 
  • Спасибо
Реакции: KolkaPetkinSyn

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 419
Баллы
113
Ткните носом где я ошибся?
Повторная инициализация переменной "s" и Вы пытаетесь записать число в строку - несоответствие типов переменных.
Вы верно все делаете - подключать функции расчета времени здесь неоправданная роскошь.
Просто при записи в переменную приведите число к строке: Convert.ToString(s);
и запишите это в переменную
project.Variables["time_audio_sec"].Value = Convert.ToString(s);
 
  • Спасибо
Реакции: KolkaPetkinSyn

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 419
Баллы
113
Уберите примерно 8 лишних кубиков в проекте и штук 5 лишних переменных:
C#:
string time = project.Variables["time_hh_mm_ss_ms"].Value.Split('.')[0];
return (int.Parse(time.Split(':')[0])*3600 + int.Parse(time.Split(':')[1])*60 + int.Parse(time.Split(':')[2]));
и выберите переменную, в которую нужно возвращать значение. Наверняка, старый формат Вам дальше в проекте не нужен, поэтому не плодите лишние переменные и используйте старую дальше.
 
  • Спасибо
Реакции: KolkaPetkinSyn и Ilshakin
Регистрация
23.03.2015
Сообщения
1 170
Благодарностей
691
Баллы
113
Уберите примерно 8 лишних кубиков в проекте и штук 5 лишних переменных:
C#:
string time = project.Variables["time_hh_mm_ss_ms"].Value.Split('.')[0];
return (int.Parse(time.Split(':')[0])*3600 + int.Parse(time.Split(':')[1])*60 + int.Parse(time.Split(':')[2]));
и выберите переменную, в которую нужно возвращать значение. Наверняка, старый формат Вам дальше в проекте не нужен, поэтому не плодите лишние переменные и используйте старую дальше.
Так и самооценка упасть может) Делаю все по инструкции, но ничего не получается. Единственный успех, код выполняется успешно но ничего не передаётся в переменную!?
C#:
string time = project.Variables["time_audio"].Value.Split('.')[0];
return (int.Parse(time.Split(':')[0])*3600 + int.Parse(time.Split(':')[1])*60 + int.Parse(time.Split(':')[2]));
project.Variables["time_audio"].Value = Convert.ToString(time);
Пример времени, которое надо конвертировать, 00:31:25.58
 
  • Спасибо
Реакции: Alexmd

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 419
Баллы
113
Так код до 3-ей строчки не дойдет, а завершится return-ом во второй строчке.
Переменную укажите в настройках кубика: возвращать значение
ф.png

Вы не все по инструкции сделали
 
  • Спасибо
Реакции: KolkaPetkinSyn
Регистрация
23.03.2015
Сообщения
1 170
Благодарностей
691
Баллы
113
Так код до 3-ей строчки не дойдет, а завершится return-ом во второй строчке.
Переменную укажите в настройках кубика: возвращать значение
Посмотреть вложение 66162
Вы не все по инструкции сделали
Всё равно не получается)
Код завершается с ошибкой, но в логах ничего нет. В переменной значение не меняется
1603966535395.png
 

volody00

Client
Регистрация
06.09.2016
Сообщения
871
Благодарностей
881
Баллы
93
Вот чуть допиленное решение от Олега (часы клади в переменную hh, минуты в mm, секунды в ss):
C#:
int h = int.Parse(project.Variables["hh"].Value);
int m = int.Parse(project.Variables["mm"].Value);
int s = int.Parse(project.Variables["ss"].Value);
var second = new TimeSpan(h, m, s).TotalSeconds;

//записываем в переменную test
project.Variables["test"].Value = Convert.ToString(second);
А вот от alexmd (кладешь в переменную time_hh_mm_ss_ms время в формате часы:минуты:секунды:миллисекунды):

C#:
string time = project.Variables["time_hh_mm_ss_ms"].Value.Split('.')[0];
var bla = (int.Parse(time.Split(':')[0])*3600 + int.Parse(time.Split(':')[1])*60 + int.Parse(time.Split(':')[2]));

//записываем в переменную test
project.Variables["test"].Value = Convert.ToString(bla);
 
Последнее редактирование:
  • Спасибо
Реакции: KolkaPetkinSyn
Регистрация
23.03.2015
Сообщения
1 170
Благодарностей
691
Баллы
113
Огромное спасибо тебе и авторам выше, использовал этот вариант:
string time = project.Variables["time_hh_mm_ss_ms"].Value.Split('.')[0];
var bla = (int.Parse(time.Split(':')[0])*3600 + int.Parse(time.Split(':')[1])*60 + int.Parse(time.Split(':')[2]));

//записываем в переменную test
project.Variables["test"].Value = Convert.ToString(bla);
 
  • Спасибо
Реакции: Alexmd

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