|
Получить время из даты | ☑ | ||
---|---|---|---|---|
0
dizpers
22.05.12
✎
18:03
|
Есть форма. На ней есть поле ввода даты. Есть реквизит дока связанный с этим полем. Тип данных у этого реквизита Дата, состав даты Время.
В коде надо расчитать разницу в минутах между текущим временем и значением в реквизите. Проблема в том что текущая дата будет формата "2012 22.05 21:11:36", а время в реквизите формата "0001 01.01 23:20:14", то есть просто вычесть две даты не получится, так как года разные. Как можно решить проблему? |
|||
1
AlexNew
22.05.12
✎
18:06
|
И?
|
|||
2
Wobland
22.05.12
✎
18:07
|
добавь к ней НачалоДня(ТекущаяДата())
|
|||
3
dizpers
22.05.12
✎
18:07
|
как привести текущую дату к году 0001 месяцу 01 и числу 01, чтобы можно было адекватно вычетать?
|
|||
4
dizpers
22.05.12
✎
18:08
|
(3) к (1)
|
|||
5
IamAlexy
22.05.12
✎
18:08
|
(0) запросто можно.
время это 01.01.0001 + время соответственно прибавь к началу дня то время что у тебя заполнено и получишь время в этом дне разница с контрольной датой - соответтсвенно тебе даст разницу секунд ну и далее как правильный 1Сник ты обязан посчиатать количество дней и непременно через умножение 24*60*60 |
|||
6
PR
22.05.12
✎
18:08
|
(3) Вычесть из нее начало текущего дня.
|
|||
7
Renat11111
22.05.12
✎
18:09
|
(3) открыть СП и почитать про функции работы с датой
|
|||
8
AlexNew
22.05.12
✎
18:14
|
(7) Это не наш метод.
|
|||
9
dizpers
22.05.12
✎
18:17
|
Что-то не получается. В коде ниже переменная ВремяОкончания - реквизит дока типа данных Дата, состав даты - время.
ТекущаяДата() - ВремяОкончания + НачалоДня(ТекущаяДата()) {(1)}: Преобразование значения к типу Число не может быть выполнено |
|||
10
Wobland
22.05.12
✎
18:18
|
ТекущаяДата() - (ВремяОкончания + НачалоДня(ТекущаяДата()))
ваще-то |
|||
11
Wobland
22.05.12
✎
18:23
|
а всё это потому, что операция сложения для дат не предусмотрена
|
|||
12
Serg_1960
22.05.12
✎
18:26
|
ПериодВСекундах = Число(ТекущаяДата() - НачалоДня(ТекущаяДата()) - Число(ВремяОкончания);
ПериодДатаВремя = Дата("00010101") + ПериодВСекундах; |
|||
13
Wobland
22.05.12
✎
18:27
|
ВремяОкончания='00010101212700';
ТекДата=ТекущаяДата(); Сообщить(ТекДата-Дата(Год(ТекДата), Месяц(ТекДата), День(ТекДата), Час(ВремяОкончания), Минута(ВремяОкончания), Секунда(ВремяОкончания))); |
|||
14
Serg_1960
22.05.12
✎
18:27
|
(12) + Это только пример и ничего более :)
|
|||
15
Wobland
22.05.12
✎
18:30
|
(12) Преобразование значения к типу Число не может быть выполнено
|
|||
16
dizpers
22.05.12
✎
18:32
|
(15) и (10) выдает ошибку, пробую (13)
|
|||
17
dizpers
22.05.12
✎
18:33
|
(13)
ТекущаяДата()-Дата(Год(ТекущаяДата())) {(1)}: Преобразование значения к типу Дата не может быть выполнено |
|||
18
Serg_1960
22.05.12
✎
18:33
|
(15) Упс :)
ПериодВСекундах = Число(ТекущаяДата() - НачалоДня(ТекущаяДата()) - Число(ВремяОкончания - Дата("00010101")); |
|||
19
dizpers
22.05.12
✎
18:35
|
(18) работает вроде бы:)
спасибо! =) |
|||
20
Wobland
22.05.12
✎
18:37
|
(19) а мне?
|
|||
21
Wobland
22.05.12
✎
18:38
|
ПериодВСекундах = Число(ТекущаяДата() - НачалоДня(ТекущаяДата()) - Число(ВремяОкончания - Дата("00010101")));
ПериодДатаВремя = Дата("00010101") + ПериодВСекундах; Сообщить(ПериодДатаВремя); внезапно 01.01.0001 0:00:00 |
|||
22
Wobland
22.05.12
✎
18:42
|
(21) а, не, работает. но только в случае если ВремяОкончания меньше текущей даты
|
|||
23
dizpers
22.05.12
✎
18:45
|
(20) Wobland, и тебе спасибо! Прояснил работу с датами. Я до этого момента понимал только то, что при выполнении операции - или + получаем результат в секундах. А оказалось, что + на даты не распространяется.
|
|||
24
Wobland
22.05.12
✎
18:51
|
(23) ну дык правильно. 22 мая - 21 мая = один день. а 22 мая + 21 мая = ?
|
|||
25
dizpers
22.05.12
✎
19:35
|
(24) ну можно было бы также выводить сумму секунд отсчитывая от 00010101000000, хотя там были бы числа порядка сотен миллионов или даже больше, но при этом можно было бы удобно складыва-вычитать даты как числа.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |