|
Преобразование минуты в часы и дни | ☑ | ||
---|---|---|---|---|
0
мистер игрек
17.05.12
✎
08:52
|
Есть готовая функия в типовых?
|
|||
1
andrewks
17.05.12
✎
08:53
|
да.
|
|||
2
echo77
17.05.12
✎
08:55
|
поделить на (60*24), поделить на 60
|
|||
3
мистер игрек
17.05.12
✎
08:57
|
(2) Знаю, просто хотел посмотреть и сравнить с моим
|
|||
4
andrewks
17.05.12
✎
09:04
|
(3) а что, могут быть варианты?
|
|||
5
мистер игрек
17.05.12
✎
09:08
|
(4) Может мой код не компактный по сравнению с типовым
|
|||
6
andrewks
17.05.12
✎
09:09
|
(5) думаешь, ихний код занимает меньше одной строчки?
|
|||
7
мистер игрек
17.05.12
✎
09:13
|
(6) Просто интересно, какой у них метод. Просто спортивны
|
|||
8
мистер игрек
17.05.12
✎
09:13
|
й интерес
|
|||
9
Maxus43
17.05.12
✎
09:14
|
свою покажи
|
|||
10
мистер игрек
17.05.12
✎
09:17
|
Здесь имеется ввиду, что 480 минута - это 1 день
ВсегоВремени = Услуги.Итог("Время"); Если ВсегоВремени < 60 Тогда ЭлементыФормы.Услуги.Колонки.Время.ТекстПодвала = Строка(ВсегоВремени)+" м."; ИначеЕсли ВсегоВремени = 60 Тогда ЭлементыФормы.Услуги.Колонки.Время.ТекстПодвала = " 1 ч."; ИначеЕсли ВсегоВремени > 60 И ВсегоВремени < 480 Тогда ЭлементыФормы.Услуги.Колонки.Время.ТекстПодвала = Строка(Цел(ВсегоВремени/60))+" ч."+Строка(ВсегоВремени%60)+" м."; ИначеЕсли ВсегоВремени = 480 Тогда ЭлементыФормы.Услуги.Колонки.Время.ТекстПодвала = "1 д."; ИначеЕсли ВсегоВремени > 480 Тогда //Здесь еще не дописал КонецЕсли; |
|||
11
andrewks
17.05.12
✎
09:21
|
жесть
|
|||
12
mikecool
17.05.12
✎
09:22
|
продолжить надо так
ИначеЕсли ВсегоВремени = 540 Тогда ЭлементыФормы.Услуги.Колонки.Время.ТекстПодвала = "1 д. 1ч. "; и т.д. |
|||
13
Maxus43
17.05.12
✎
09:23
|
Дни = ЦЕЛ(Минуты / 60 / 24) и т.д., если не 0 тогда добавляй свой "Х д."
проще же |
|||
14
andrewks
17.05.12
✎
09:23
|
Строка(Цел(ВсегоВремени/86400))+" д. "+Строка(Цел(ВсегоВремени/3600))+" ч. "+Строка(Цел(ВсегоВремени/60))+" м. "+Строка(ВсегоВремени%60)+" с."
|
|||
15
smaharbA
17.05.12
✎
09:25
|
и попадешь в будущее или прошлое
|
|||
16
мистер игрек
17.05.12
✎
09:26
|
(14) Это было шутка, да?
|
|||
17
Maxus43
17.05.12
✎
09:29
|
(16) почему?
|
|||
18
мистер игрек
17.05.12
✎
09:30
|
(17) Ты проверь 3218 минут в этой формуле
|
|||
19
Maxus43
17.05.12
✎
09:31
|
(18) ну ВсегоВремени * 60 сделай сначала. он писал для секунд
|
|||
20
Живой Ископаемый
17.05.12
✎
09:32
|
2(16) не шутка, просто человек секунды преобразовал
тебе так: Строка(Цел(145/1440))+" д. "+Строка(Цел(145/60))+" ч. "+Строка(145%60)+" м. " |
|||
21
andrewks
17.05.12
✎
09:33
|
а, ну да, не обратил внимание, что речь про минуты, а не секунды
|
|||
22
Maxus43
17.05.12
✎
09:33
|
автор, с похмелья чтоль?) не ожиданно как то
|
|||
23
Живой Ископаемый
17.05.12
✎
09:34
|
||||
24
Maxus43
17.05.12
✎
09:36
|
Строка(Цел(145/1440))+" д. "+Строка(Цел(145 - Цел(145/1440)*1440)/60)) и т.д.
|
|||
25
Irbis
17.05.12
✎
09:37
|
ИначеЕсли ВсегоВремени = 480 Тогда
ЭлементыФормы.Услуги.Колонки.Время.ТекстПодвала = "1 д."; Это полный бред, это даже не полдня |
|||
26
мистер игрек
17.05.12
✎
09:37
|
(19) ок. А если всего 60 минут, тогда должна отображаться только "1 ч."
Здесь эта формула бессильна. А еще, если всего 123 минута, тогда дни не должны отображатся. |
|||
27
Reset
17.05.12
✎
09:37
|
(10) "Здесь еще не дописал" :D
Спасибо за поднятое с утра настроение ;) |
|||
28
andrewks
17.05.12
✎
09:38
|
(26) да ёшкин кот. а дописать слабо?
|
|||
29
Живой Ископаемый
17.05.12
✎
09:39
|
2(26) ну то есть ты никак не сможешь сконвертироватьсвой почти восьмилетний опыт сидения на форуме в какой-то код, который учтет это?
|
|||
30
мистер игрек
17.05.12
✎
09:47
|
(28) Все таки твоя изяшная формула дорастет до размера моего кода, не так? :)
|
|||
31
andrewks
17.05.12
✎
09:47
|
(30) нет
|
|||
32
Maxus43
17.05.12
✎
09:48
|
(30) нет
Дни = ... Часы = ... Месяцы = ... Строка = ?(Дни >0, Строка(Дни) + " д.", "") + .... при желании в одну строку слепить |
|||
33
Maxus43
17.05.12
✎
09:48
|
*месяцы = минуты
|
|||
34
andrewks
17.05.12
✎
09:50
|
?(ВсегоВремени>=1440,Строка(Цел(ВсегоВремени/1440))+" д. ","")+?(ВсегоВремени>=60,Строка(Цел(ВсегоВремени/60))+" ч. ","")+Строка(Цел(ВсегоВремени%60))+" м. "
|
|||
35
Stepa86
17.05.12
✎
09:50
|
Функция ФорматВремени( КоличествоСекунд )
Если КоличествоСекунд < 24*60*60 Тогда Возврат Формат( Дата(1,1,1) + КоличествоСекунд , "ДФ='HH""ч."" mm""м.""'; ДП=0:00:00" ); Иначе Возврат Формат( Дата(1,1,1) + КоличествоСекунд - 24*60*60, "ДФ='dd ""д."" HH""ч."" mm""м.""'; ДП=0:00:00" ); КонецЕсли; КонецФункции |
|||
36
мистер игрек
17.05.12
✎
09:54
|
(34) Указал 60 минут, вот что выдает: "1ч. 0 м."
Так что не бинго :) |
|||
37
andrewks
17.05.12
✎
09:55
|
(36) а что, это не так?
|
|||
38
мистер игрек
17.05.12
✎
09:57
|
(37) В этом случае "0 м." не должен обображатся
|
|||
39
andrewks
17.05.12
✎
09:57
|
(38) кто сказал?
|
|||
40
мистер игрек
17.05.12
✎
09:57
|
(39) Ну клиент так хочеть
|
|||
41
Aprobator
17.05.12
✎
09:58
|
(0) шо - опять!?
|
|||
42
Maxus43
17.05.12
✎
10:11
|
(38) > (32)
З.ы. точно с похмелья ТС, это ж школьные алгоритмы |
|||
43
мистер игрек
17.05.12
✎
10:23
|
(42) Давайте профессор, удивите меня. Ваш код в студию плиз.
|
|||
44
DrShad
17.05.12
✎
10:24
|
(35) малость не то, т.е. если 86400, то результат 00:00:00, а дни вообще не считает
|
|||
45
Maxus43
17.05.12
✎
10:26
|
(43)
Дни = Строка(Цел(ВсегоМин/1440); Часы = Строка(Цел(ВсегоМин - Дни*1440)/60)) ; Минуты= Строка(ВсегоМин %60)+" м. "; Строка = ?(Дни >0, Строка(Дни) + " д.", "") + ?(Часы >0, Строка(Часы ) + " ч.", "") + ?(Минуты>0, Строка(Минуты) + " м.", ""); на коленке писал, синтаксис подправиш если чо |
|||
46
Maxus43
17.05.12
✎
10:28
|
*Минуты= Строка(ВсегоМин %60);
|
|||
47
мистер игрек
17.05.12
✎
10:34
|
(45)
{Форма.ФормаОтчета(10)}: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата) Результат = ?(Дни >0, Строка(Дни) + " д.", "") + ?(Часы >0, Строка(Часы ) + " ч.", "") + ?(Минуты>0, Строка(Минуты) + " м.", ""); |
|||
48
rs_trade
17.05.12
✎
10:44
|
пачему еще не было запроса? непорядок.
ВЫБРАТЬ РАЗНОСТЬДАТ(&Дата1, ДОБАВИТЬКДАТЕ(&Дата1, МИНУТА, &КолМинут), ДЕНЬ) КАК День, ЧАС(ДОБАВИТЬКДАТЕ(&Дата1, МИНУТА, &КолМинут)) КАК Час, МИНУТА(ДОБАВИТЬКДАТЕ(&Дата1, МИНУТА, &КолМинут)) КАК Минута |
|||
49
Maxus43
17.05.12
✎
10:48
|
(47) всё за тебя делать? хватит издеваться то ёлки палки
|
|||
50
мистер игрек
17.05.12
✎
10:48
|
(48) Тут есть маленький ньюанс.
Здесь день не 1440 минут, а 480 минут |
|||
51
мистер игрек
17.05.12
✎
10:49
|
(49) Ты давай, не отвлекайся. Доделай формулу :)
|
|||
52
Maxus43
17.05.12
✎
10:52
|
(51) учёл (46)?
|
|||
53
Maxus43
17.05.12
✎
10:52
|
код в студию полный
|
|||
54
rs_trade
17.05.12
✎
10:55
|
(50) че за планета? ))) умножай на 3
|
|||
55
мистер игрек
17.05.12
✎
11:00
|
Короче, текст должен выглядеть так:
0 минут = "" 1 минут = "1м." 60 минут = "1ч." 61 минут = "1ч.1м." 480 минут = "1д." 481 минут = "1д.1м" 540 минут = "1д.1ч" 541 минут = "1д.1ч.1м" 581 минут = "1.2ч.1м." и т.д. |
|||
56
НЕА123
17.05.12
✎
11:07
|
(55)
читай (45) и (47). |
|||
57
Maxus43
17.05.12
✎
11:09
|
Дни = Строка(Цел(ВсегоМин/480);
Часы = Строка(Цел(ВсегоМин - Дни*480)/60)); |
|||
58
szhukov
17.05.12
✎
11:24
|
(57) Ты же переменные привел к строке, а потом сравниваешь на больше с 0, поэтому наверное и матерится, не?
|
|||
59
rs_trade
17.05.12
✎
11:25
|
лол
ВЫБРАТЬ РАЗНОСТЬДАТ(&Дата1, ДОБАВИТЬКДАТЕ(&Дата1, МИНУТА, &КолМинут*3), ДЕНЬ) КАК Дней, ЧАС(ДОБАВИТЬКДАТЕ(&Дата1, МИНУТА, &КолМинут-480*(РАЗНОСТЬДАТ(&Дата1, ДОБАВИТЬКДАТЕ(&Дата1, МИНУТА, &КолМинут*3), ДЕНЬ)))) КАК Часов, ЧАС(ДОБАВИТЬКДАТЕ(&Дата1, МИНУТА, &КолМинут-480*(РАЗНОСТЬДАТ(&Дата1, ДОБАВИТЬКДАТЕ(&Дата1, МИНУТА, &КолМинут*3), ДЕНЬ)))) КАК Минут |
|||
60
Maxus43
17.05.12
✎
11:26
|
(58) да, это копипаст такой) на коленке писал, такие то ошибки автор сможет исправить?
Дни = Цел(ВсегоМин/480); Часы = Цел(ВсегоМин - Дни*480)/60); Минуты= ВсегоМин %60; Строка = ?(Дни >0, Строка(Дни) + " д.", "") + ?(Часы >0, Строка(Часы ) + " ч.", "") + ?(Минуты>0, Строка(Минуты) + " м.", ""); |
|||
61
Reset
17.05.12
✎
11:28
|
(60) Зачем ему самому доделывать? Он тут нашел негров и понукает (51). Я бы не стал с ним возиться.
|
|||
62
szhukov
17.05.12
✎
11:28
|
(60) судя по его стартовому алгоритму и замечаниям - по этому поводу есть сомнения...:)
|
|||
63
Serg_1960
17.05.12
✎
11:40
|
ЧислоСекунд = Число(ТекущаяДата()-НачалоДня(ТекущаяДата()));
Т = Дата("00010101") + ЧислоСекунд; ЧасыМинутыСекунды = "" + ?(Час(Т)<>0,СокрЛП(Час(Т))+"ч.","") + ?(Минута(Т)<>0,СокрЛП(Минута(Т))+"м.","") + ?(Секунда(Т)<>0,СокрЛП(Секунда(Т))+"с.",""); Сообщить(ЧасыМинутыСекунды); Возврат; |
|||
64
Maxus43
17.05.12
✎
11:42
|
(63) у него в сутках 8 часов. рабочее время считает видимо
|
|||
65
мистер игрек
17.05.12
✎
11:43
|
(60) Неа.
Опять облом |
|||
66
Maxus43
17.05.12
✎
11:43
|
(65) конкретней
|
|||
67
Maxus43
17.05.12
✎
11:45
|
Часы = Цел(ВсегоМин)/60);
Дни = ?(Часы>8, ЦЕЛ(Часы/3), 0); Часы = Часы - Дни*3; Минуты= ВсегоМин %60; Строка = ?(Дни >0, Строка(Дни) + " д.", "") + ?(Часы >0, Строка(Часы ) + " ч.", "") + ?(Минуты>0, Строка(Минуты) + " м.", ""); |
|||
68
мистер игрек
17.05.12
✎
11:45
|
(66)
4 = "0,066666666666666666666666667 ч.4 м" |
|||
69
Maxus43
17.05.12
✎
11:46
|
(68) скобку передвинь, чо и это за тебя делать? я не тестирую
|
|||
70
Maxus43
17.05.12
✎
11:47
|
в (67) правильней имхо будет
|
|||
71
Maxus43
17.05.12
✎
11:50
|
* Дни = ?(Часы>8, ЦЕЛ(Часы/8), 0);
|
|||
72
мистер игрек
17.05.12
✎
11:57
|
Ффу. Наконецо реши. Вот Код:
Функция ПреобразоватьЧислоВВремя(ВсегоВремени) Экспорт Перем Остаток,Остаток2,Д,Ч; Если ВсегоВремени = 0 Тогда Возврат ""; КонецЕсли; Д = ?(Цел(ВсегоВремени/480)=0,"",Строка(Цел(ВсегоВремени/480))+"д."); Остаток = Всеговремени%480; Ч = ?(Цел(Остаток/60)=0,"",Строка(Цел(Остаток/60))+"ч."); М =?(ВсегоВремени%60=0,"",Строка(ВсегоВремени%60)+"м."); Возврат Д+Ч+М; КонецФункции ЗЫ. Если кто нибудь надйте более короткий код или найдет в этом коде изьян, тому респект. Всем спасибо. |
|||
75
Живой Ископаемый
17.05.12
✎
20:32
|
что такое "более короткий"? без переводов строк и лишних переменных - будет ли считаться более коротким?
|
|||
76
мистер игрек
18.05.12
✎
09:57
|
(75) Проверить текс кода через
СтрДлина(Заменить(ТекстКода,""," ")) У кого самый короткий, тот круче :) Это кодомер, у кого короче :) |
|||
77
Aprobator
18.05.12
✎
10:07
|
код не должен быть коротким. Он должен быстрее работать. А длиннее, короче - нефига не критерий.
|
|||
78
hhhh
18.05.12
✎
10:07
|
(76) Однако зачем там Остаток2 у вас? Это как бы резервная переменная? Она находится на подхвате, если остальные переменные глюканут?
|
|||
79
мистер игрек
18.05.12
✎
10:10
|
(77) имеется ввиду: скорость такая же, но код короче
|
|||
80
мистер игрек
18.05.12
✎
10:10
|
(78) Я в спешке постанул, потом убрал его
|
|||
81
мистер игрек
18.05.12
✎
10:12
|
вот после преобразования:
Функция ПреобразоватьЧислоВВремя(ВсегоВремени) Экспорт Д = ?(Цел(ВсегоВремени/480)=0,"",Строка(Цел(ВсегоВремени/480))+"д."); Ч = ?(Цел(Всеговремени%480/60)=0,"",Строка(Цел(Всеговремени%480/60))+"ч."); М =?(ВсегоВремени%60=0,"",Строка(ВсегоВремени%60)+"м."); Возврат ?(ВсегоВремени=0,"",Д+Ч+М); КонецФункции |
|||
82
Aprobator
18.05.12
✎
10:13
|
(79) улучшайзинг - зло отнимающее время. Лучше его на какие нибудь курсы это время потратить.
|
|||
83
мистер игрек
18.05.12
✎
10:18
|
(82) Отцепись, а?
|
|||
84
hhhh
18.05.12
✎
10:20
|
(81) нашел вот старую программу, вроде короче:
Минут = Вр % 60; ДнейЧасов = (Вр - Минут) / 60; Если ДнейЧасов < 24 Тогда Возврат Прав("0" + СокрЛП(ДнейЧасов), 2) + ":" + Прав("0" + СокрЛП(Минут), 2); Иначе Часов = ДнейЧасов % 24; Дней = (ДнейЧасов - Часов) / 24; Возврат СокрЛП(Дней) + "д" + Прав("0" + СокрЛП(Часов), 2) + ":" + Прав("0" + СокрЛП(Минут), 2); КонецЕсли; |
|||
85
мистер игрек
18.05.12
✎
10:25
|
(84) проверь через:
СтрДлина(Заменить(ТекстКода,""," ")) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |