|
Арифметические операции с датами | ☑ | ||
---|---|---|---|---|
0
Trance_1C
10.08.11
✎
07:11
|
В одной подсистеме внедренной в типовую УПП, столкнулся с такими выражениями в коде:
Маркер = Строка(ТекущаяДатаНД + ВремяПовтора - '00010101000000' - '00010101000000') здесь ТекущаяДатаНД и ВремяПовтора это даты. естественно это не работает на платформе 8.1.15 Это что раньше было возможно, как такое вообще можно было написать? |
|||
1
Trance_1C
10.08.11
✎
07:20
|
использовалось в этой нетленке:
Служба мгновенных сообщений 2 редакция... http://serezhenko.narod.ru/v8/sms2/index.htm |
|||
2
popcorn
10.08.11
✎
07:40
|
(0) А почему не работает? в 8.1.15 отменили арифметические операции с датой чтоли? Какую ошибку выдает? Подозреваю что ; в конце надо поставить.
|
|||
3
Wobland
10.08.11
✎
07:42
|
(2) у меня сложить не получилось. '00010101'+'00010101' преобразование к типу число не может быть выполнено. а вычитание проходит нормально ;)
|
|||
4
forforumandspam
10.08.11
✎
07:46
|
(3) Дату нельзя сложить с датой, только с числом.
|
|||
5
ДенисЧ
10.08.11
✎
07:48
|
(3) дату из даты вычитать можно. Складывать - нет смысла...
|
|||
6
Trance_1C
10.08.11
✎
07:49
|
Книга знаний: v8: Дата и время в 8.0
Дело в том что складывать даты нельзя, можно прибавлять и вычитать секунды, а в этой нетленке такой откровенный тупеж, и выглядит все так как будто у автора это работало, вот что самое поразительное :( он там к пустым датам прибавляет даты, потом к ним же секунды... |
|||
7
Trance_1C
10.08.11
✎
07:51
|
может на старой платформе работало?
на 8.0 |
|||
8
Wobland
10.08.11
✎
07:51
|
хм. а если вдруг надо прибавить один день и три часа? понятно, что можно +86400+3*3600... как-то не очень логично
|
|||
9
popcorn
10.08.11
✎
07:52
|
Наверное там скобок не хватает.
Маркер = Строка(ТекущаяДатаНД + ВремяПовтора - ('00010101000000' - '00010101000000')) |
|||
10
Wobland
10.08.11
✎
07:55
|
а минус 0 там вообще к чему?
|
|||
11
popcorn
10.08.11
✎
07:56
|
(10) возможно там была другая дата в вычитаемом. Так хоть смысл есть
|
|||
12
Trance_1C
10.08.11
✎
07:57
|
(8) Все логично, в одном дне всегда 86400 секунд, и в одной неделе всегда 7 дней, а вот для добавления и вычитания месяца уже есть специальная функция ДобавитьМесяц()
|
|||
13
Wobland
10.08.11
✎
07:59
|
внезапно нашёл у себя 8.0 и эту же конфигурацию. Сделал ВнешнююОбработку1, в коде не искал. преобразование к числу...
|
|||
14
Trance_1C
10.08.11
✎
07:59
|
Вобщем понятно, не должны эти выражения рабоатать, буду переписывать, странно только, зачем релизить решение с таким ущербным кодом...
|
|||
15
Wobland
10.08.11
✎
07:59
|
Trance_1C, скажи, где увидел
|
|||
16
Trance_1C
10.08.11
✎
08:00
|
(13) глянь функцию смсПолучитьМаркер() в общем модуле смсОсновной
|
|||
17
Trance_1C
10.08.11
✎
08:01
|
смсПолучитьМаркер() - вызывается из общ. модуля смсСообщеня.смсСоздатьСообщенияОтслужбы()
|
|||
18
Sammo
10.08.11
✎
08:08
|
(9) Скорее
(ТекущаяДатаНД + (ВремяПовтора - '00010101000000') - '00010101000000') Т.е. к текущей дате НД добавляем количество секунд во времени повтора |
|||
19
Wobland
10.08.11
✎
08:10
|
(16) под паролем
|
|||
20
Trance_1C
10.08.11
✎
08:11
|
(18) код скопипастил как есть, понятно что логику нужно будет переписать, и я это конечно исправлю, просто эта нетленка давно уже распространяется в таком виде и что у всех работает? :)
|
|||
21
Trance_1C
10.08.11
✎
08:12
|
(19) да там какбэ модули скомпилированы немножко...
|
|||
22
popcorn
10.08.11
✎
08:19
|
(18) так не получится. ВремяПовтора - это число наверное. К числу нельзя прибавить дату.
(8) >>хм. а если вдруг надо прибавить один день и три часа? Вот так: ТекущаяДата() + ('00010102030000' - '00010101000000') |
|||
23
Sammo
10.08.11
✎
08:45
|
(22) Если бы было число, то проблем бы не было
+ в топике "здесь ТекущаяДатаНД и ВремяПовтора это даты. " |
|||
24
popcorn
10.08.11
✎
09:01
|
(23) тогда да, как в (18) лучше будет.
Если бы было число, проблема была бы тоже |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |