| 
    
        
     
     | 
    
  | 
Получить время из даты | ☑ | ||
|---|---|---|---|---|
| 
    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, хотя там были бы числа порядка сотен миллионов или даже больше, но при этом можно было бы удобно складыва-вычитать даты как числа.     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |