![]() |
|
Как преобразовать два числа во время? | ☑ | ||
---|---|---|---|---|
0
anivaler
09.09.09
✎
16:20
|
Есть функция, которая считает разность Время1 и Время2. Выделяю из полученных секунд Часы и Минуты. Как преобразовать эти два числа во время???
Функция РазностьВремени (Время1, Время2) Экспорт РазностьВСекундах = Время1 - Время2; Часы = Цел(РазностьВСекундах/3600); Минуты = (РазностьВСекундах/60) - (Часы * 60); КонецФункции |
|||
1
Mort
09.09.09
✎
16:21
|
Что это за такой тип "Время" ?
|
|||
2
anivaler
09.09.09
✎
16:25
|
Время1 и Время2 - это два значения типа Дата с составом даты: Время
|
|||
3
Альберт_Уфа
09.09.09
✎
16:27
|
(2) нет такого типа как Время. Есть тип Дата.
|
|||
4
Mort
09.09.09
✎
16:28
|
(2) Да и разница между ними, это время с Даты1 по Дата2 в секундах. Что ещё надо?
|
|||
5
anivaler
09.09.09
✎
16:30
|
Т.е. единственный выход это Дата(1,1,1, Часы, Минуты, 1) Так?
|
|||
6
Альберт_Уфа
09.09.09
✎
16:32
|
(5) а если Дата1-Дата2 больше 24 часов? тогда что?
|
|||
7
Mort
09.09.09
✎
16:42
|
(5) Не понятно.
Тебе нужно получить дату равной (Время1 - Время2) секунд с рождества Христова? Нафига, интересно.. |
|||
8
anivaler
09.09.09
✎
16:44
|
У меня есть справочник в котором два реквизита типа Дата с составом даты Время.
Это реквизиты Время1 и Время2. Так вот мне нужно по задаче получать разность между ними...Вот... |
|||
9
Альберт_Уфа
09.09.09
✎
16:44
|
(0) добавь в своей функции строчку типа:
Сообщить("Разность дат = " + Часы + ":" + Минуты); |
|||
10
anivaler
09.09.09
✎
16:46
|
(9) Нет. Так не пойдет, потому что эту разность мне потом ещё нужно использовать и использовать как Дата.
|
|||
11
Альберт_Уфа
09.09.09
✎
16:48
|
(10) каким образом ты собираешься использовать как дата?
|
|||
12
anivaler
09.09.09
✎
16:53
|
Ну я имею ввиду тип "Дата". Вот скажем у меня Время1 = 23:05, а Время2 = 19:45.
Разность это 3:20 И потом от этой разности нужно отнимать другое время... День, месяц и год меня не интересуют. Вот в чём моя задача... Как лучше быть? |
|||
13
73
09.09.09
✎
16:54
|
Дата(1,1,1) + (Время1 - Время2)
? |
|||
14
anivaler
09.09.09
✎
16:55
|
(13) Для чего добавлять Дата(1,1,1)
??? |
|||
15
73
09.09.09
✎
16:56
|
(14) Чтобы дату получить, а не число.
|
|||
16
anivaler
09.09.09
✎
16:58
|
А (5) не то же самое? ;-)
|
|||
17
73
09.09.09
✎
17:00
|
(16) Секунда там лишняя. И зачем еще что-то делить и умножать, чтобы найти часы и минуты?
|
|||
18
73
09.09.09
✎
17:02
|
(17)+ С секундами там вообще что-то не то.
|
|||
19
Odin1C
09.09.09
✎
17:07
|
(0) Решаешь плохую задачку. В 1с единица времени это секунды. Соответственно тебе оперировать нужно только ими. Их можно добавлять к дате и вычитать из даты и получишь дату. Не извращайся.
|
|||
20
Mort
09.09.09
✎
17:07
|
Разницу между датами храни числом секунд и будет тебе щастье. А при выводе преобразуй в строку уже как хочешь, по часам разбивай и т.п. Тип дата тебе здесь НЕ НУЖЕН.
|
|||
21
anivaler
09.09.09
✎
17:12
|
Понял. Только действительно, непонятно, что делать, если Дата1 < Дата2
??? |
|||
22
anivaler
09.09.09
✎
17:23
|
Помогите пожалуйста, ведь у меня и такая ситуация присутствует...
|
|||
23
Ненавижу 1С
гуру
09.09.09
✎
17:31
|
(21) и что тогда? будет отрицательное число
|
|||
24
Альберт_Уфа
09.09.09
✎
17:34
|
(21) прибавь к Дате1 60*60*24
|
|||
25
Фокусник
09.09.09
✎
17:41
|
(6) Ну и в чем проблема? Разница будет, например, 5 дней 10 часов 15 секунд ;)
|
|||
26
anivaler
09.09.09
✎
17:46
|
Спасибо...Чёт я переработал сёдня... Пипец это же так просто всё... )
|
|||
27
anivaler
09.09.09
✎
17:46
|
Работает:
Функция РазностьВремени (Время1, Время2) Экспорт РазностьВСекундах = Время1 - Время2; Если РазностьВСекундах >= 0 Тогда Возврат Дата(1,1,1) + РазностьВСекундах; ИначеЕсли РазностьВСекундах < 0 Тогда Время3 = Время1 + 86400; РазностьВСекундах = Время3 - Время2; Возврат Дата(1,1,1) + РазностьВСекундах; КонецЕсли; КонецФункции |
|||
28
anivaler
11.09.09
✎
16:40
|
У меня опять вопрос. А как сделать сумму времени?
|
|||
29
Ненавижу 1С
гуру
11.09.09
✎
16:41
|
также как и разность
|
|||
30
b4rs30
11.09.09
✎
16:48
|
(29) ))
|
|||
31
anivaler
11.09.09
✎
16:55
|
Неа... Выскакивает ошибка:
{ОбщийМодуль.ПутевойЛист(437)}: Преобразование значения к типу Число не может быть выполнено СуммаВСекундах = Время1 + Время2; |
|||
32
anivaler
11.09.09
✎
16:57
|
А вот моя функция:
Функция СуммаВремени (Время1, Время2) Экспорт СуммаВСекундах = Время1 + Время2; Возврат Дата(1,1,1) + СуммаВСекундах; КонецФункции |
|||
33
73
11.09.09
✎
17:03
|
11:00 + 15:00 -- даты.
-что хочешь получить? Если правильно понял: ДобавитьСекунд = Время2 - Дата(1,1,1); Возврат Время1 + ДобавитьСекунд; ЗЫ. Непонятно зачем это нужно. |
|||
34
anivaler
11.09.09
✎
17:28
|
Объясню.
Время3 = Время1 - Время2; Время4 = Время5 - Время6; Время3 получилось к примеру 3 часа, а Время4 получилось 4 часа. Мне нужно получить сумму Время3 и ВРемя4, т.е. сумма должна быть 7 часов. Вот. |
|||
35
hhhh
11.09.09
✎
17:29
|
(33) ну, допустим, задача. Из пункта А в пункт Б пешеход шел 11 часов, а обратно 15 часов. Спрашивается, сколько времени он потратил всего. Ответ
11:00 + 15:00 = 26:00 |
|||
36
anivaler
11.09.09
✎
17:29
|
(33)
11:00 + 15:00 Хочу получить 26 часов, но таких больших сумм у меня не будет. Максимальная сумма часов у меня будет где-то 10. |
|||
37
anivaler
11.09.09
✎
17:31
|
Хорошо, тогда где в функции ошибка?
|
|||
38
73
11.09.09
✎
17:32
|
(34)(35)(36) Согласитесь 15 <> 15:00. То число, а то дата, точнее датавремя.
(37) Даты не складываются - вот ошибка. Проверь (33). |
|||
39
73
11.09.09
✎
17:34
|
(38)+ На всякий, озвучь типы Время1 и Время2.
|
|||
40
anivaler
11.09.09
✎
17:35
|
(39) Дата и то и другое
|
|||
41
anivaler
11.09.09
✎
17:36
|
to 73:
Получилось: (33). Спасибо. |
|||
42
hhhh
11.09.09
✎
17:43
|
(38) он работает с числами, но представленными в формате: часы:минуты
|
|||
43
73
11.09.09
✎
17:44
|
(42) Судя по (31) и (40) - с датами.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |