Имя: Пароль:
1C
1С v8
Строку вида "12:20:54" преобразовать в количество секунд
0 virus555
 
23.02.17
19:39
Собственно сабж.
Как строку вида "12:20:54" преобразовать в количество секунд?
1 anatoly
 
23.02.17
19:44
разбить - поумножать - суммировать.

ОМ.ОбщегоНазначения я так понимаю вообще незнакомое слово??
2 virus555
 
23.02.17
19:47
(1) думал может для этого какая-то функция уже есть
ОМ.ОбщегоНазначения - правильно понимаете :)
3 anatoly
 
23.02.17
19:48
ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок()

дальше СП расскажет...
4 Лефмихалыч
 
23.02.17
19:48
мнСтрока = СтрЗаменить("12:20:54", ":", Символы.ПС);
КоличествоСекунд = 0;
Для СчЦ=0 по 2 Цикл
   Основание = Число(СтрПолучитьСтроку(мнСтрока, 3-СчЦ));
   КоличествоСекунд = КоличествоСекунд + pow(Основание, СчЦ);
КонецЦикла

Сообщить(КоличествоСекунд);

Но это не точно - надо отладить
5 Лефмихалыч
 
23.02.17
19:49
ой, пля, не
pow(Основание, СчЦ);

а

Основание * pow(60, СчЦ);
6 H A D G E H O G s
 
23.02.17
19:49
Жесть какая
7 vde69
 
23.02.17
19:50
попробуй так

Число(Дата(12:20:54))
8 Лефмихалыч
 
23.02.17
19:52
(6) ценное замечание

(7) без даты не кастанет
9 H A D G E H O G s
 
23.02.17
19:53
ВремяСтрокой="00:01:54";
    ДатаиВремяСтрокой=Формат(ТекущаяДата(),"ДЛФ=D")+" "+ВремяСтрокой;
    ДатаиВремя=Дата(ДатаиВремяСтрокой);
    Секунд=ДатаиВремя-НачалоДня(ДатаиВремя);
10 Fram
 
23.02.17
19:54
Дата("2017.01.01 12:20:54") - Дата("2017.01.01 00:00:00")
11 Fram
 
23.02.17
19:54
не успел )
12 virus555
 
23.02.17
19:54
Всем спасибо (5) работает. Сейчас и остальное проверю
13 Провинциальный 1сник
 
23.02.17
19:59
(0)  КоличествоСекунд=Число(Сред(СтрокаВремя,1,2))*3600+Число(Сред(СтрокаВремя,4,2))*60+Число(Сред(СтрокаВремя,7,2))
14 Лефмихалыч
 
23.02.17
20:00
(12) ну, только что это довольно дорогой способ
15 Garykom
 
гуру
23.02.17
20:14
Иногда после таких вопросов как в (0) хочется спросить:

"А как бы вы сделали это в запросе?"
16 youalex
 
23.02.17
20:27
[1ccode]
ВремяСтрокой = СтрЗаменить("12:20:54", ":", "");
ВремяДатой = Дата("00010101" + ВремяСтрокой);
КоличествоСекунд = ВремяДатой - '00010101';
[/1ccode]
17 Serg_1960
 
23.02.17
21:08
(16) А если "1:20:54"? :)
18 youalex
 
23.02.17
22:04
(17) Ну да, была такая мысль, сделал допущение. Решается костылем, через СтрДлина() или Найти().
Впрочем, сам подобное решал через разбор строки, аналогично (4), но без цикла, и  преобразуя части даты в числа в попытке.
19 Aleksey
 
23.02.17
22:16
(18) хм, а я всегда через Прав() решал

Прав("0"+"1:20:54",8)
20 youalex
 
23.02.17
22:25
(19) тоже норм, но тоже костыль)
21 Wern
 
24.02.17
17:59
Вычислить("(("+СтрЗаменить("12:20:54",":",")*60+")
22 Fram
 
24.02.17
19:39
(21) в часах тоже 60 секунд?.. не знал
23 Wern
 
24.02.17
20:51
(22) Обрати внимание на скобки.
24 Fram
 
24.02.17
22:43
(23) пардон, все верно. но решение не лучшее, потому что об это глаза сломать можно.