|
29.02 добавить год | ☑ | ||
---|---|---|---|---|
0
ASU_Diamond
27.02.15
✎
07:12
|
При добавлении года к дате 29.02.2012 какой результат правильный:
28.02.2013 или 01.03.2013? PS. 1С выдает 28.02.2013 |
|||
1
Starhan
27.02.15
✎
07:16
|
28.
Потому что если к 1.03.2013 прибавить год будет 1.03.2014 а не 02.03.2014. |
|||
2
Тындр
27.02.15
✎
07:16
|
Добавить год и добавить 365 дней не одно и то же.
1с непогрешимо |
|||
3
RomaH
naïve
27.02.15
✎
07:21
|
(2) ну ... в запросах по крайней мере
ДОБАВИТЬКДАТЕ(,1,ГОД) - прибавляет именно 365 дней а вот ДОБАВИТЬКДАТЕ(,12,МЕСЯЦ) - уже 1 год по крайней мере в одном из релизов |
|||
4
ASU_Diamond
27.02.15
✎
07:21
|
(1) год = 365,25 дней
|
|||
5
ASU_Diamond
27.02.15
✎
07:23
|
(3) сейчас выдает
ДОБАВИТЬКДАТЕ(28.02.2013,1,ГОД) = 28.02.2013 |
|||
6
ASU_Diamond
27.02.15
✎
07:23
|
*ДОБАВИТЬКДАТЕ(29.02.2013,1,ГОД) = 28.02.2013
|
|||
7
ASU_Diamond
27.02.15
✎
07:32
|
Кстати, тут возникает такая проблема:
ДОБАВИТЬКДАТЕ(29.02.2012,1,ГОД) = 28.02.2013 ДОБАВИТЬКДАТЕ(28.02.2013,-1,ГОД) = 28.02.2012 |
|||
8
Рэйв
27.02.15
✎
07:47
|
(7)Тебе рассказать что такое високосный год или сам погуглишь?
|
|||
9
CHerypga
27.02.15
✎
07:48
|
пятница же
КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(2012, 2, 29), МЕСЯЦ), СЕКУНДА, 1), МЕСЯЦ), СЕКУНДА, 1), МЕСЯЦ), СЕКУНДА, 1), МЕСЯЦ), СЕКУНДА, 1), МЕСЯЦ), СЕКУНДА, 1), МЕСЯЦ), СЕКУНДА, 1), МЕСЯЦ), СЕКУНДА, 1), МЕСЯЦ), СЕКУНДА, 1), МЕСЯЦ), СЕКУНДА, 1), МЕСЯЦ), СЕКУНДА, 1), МЕСЯЦ), СЕКУНДА, 1), МЕСЯЦ), СЕКУНДА, 1), МЕСЯЦ) КАК Поле1 |
|||
10
cons74
27.02.15
✎
08:18
|
(9) ты забыл добавить цикл)))
|
|||
11
Эмбеддер
27.02.15
✎
08:20
|
(27) ну и хорошо, что 1С выдает 28.02.2013, т.к. это правильно
|
|||
12
Провинциальный 1сник
27.02.15
✎
08:26
|
(8) Очевидно, что високосный год. Неочевидно несимметричное поведение, в одном случае 1с смещает день, в другом - нет.
|
|||
13
Эмбеддер
27.02.15
✎
08:29
|
(12) в чем неочевидность? хуже, если бы 1 марта 1С посчитала
|
|||
14
фобка
27.02.15
✎
08:30
|
(0) если к твоему дню рождения прибавить год какое число получится?
|
|||
15
фобка
27.02.15
✎
08:32
|
А речь о високосных.. Не вчитался
|
|||
16
Провинциальный 1сник
27.02.15
✎
08:34
|
(13) Если 1с из 29.02 високосного года путем прибавления года получает 28.02 невисокосного - пусть. Но тогда можно бы ожидать и обратного, что если год прибавляем к 28.02 невисокосного перед високосным - то получаем 29.02 високосного, а этого нет. Хотя, если данное поведение описано в документации, то ничего страшного. Оно описано?
|
|||
17
фобка
27.02.15
✎
08:39
|
(16) а если к 26.02 невисокосного перед високосным прибавить год, должно получиться 27.02 високосного? Для некоторых случаев логичнее использовать все же Конецпериода()
|
|||
18
Провинциальный 1сник
27.02.15
✎
08:46
|
"а если к 26.02 невисокосного перед високосным прибавить год, должно получиться 27.02 високосного"
Нет. Последний день февраля - особая дата, и её особость учтена в поведении, но учтена не совсем очевидно. |
|||
19
Fish
27.02.15
✎
08:49
|
(16) "тогда можно бы ожидать и обратного, что если год прибавляем к 28.02 невисокосного перед високосным - то получаем 29.02 високосного" - а вот это было бы уже неправильным результатом.
|
|||
20
Эмбеддер
27.02.15
✎
09:30
|
(18) все-таки ровно через год после 28 февраля наступит 28 февраля
|
|||
21
1Сергей
27.02.15
✎
09:35
|
мне вот интересно, в каких случаях может понадобиться к дате прибавлять (отнимать) некое количество месяцев? Причем, если исходная дата конец месяца, то и в результате должна получиться тоже конец месяца.
ЗЫ Кстати, такая фигня возникает не только с февралём, но и с любым другим месяцем, если прибавлять или отнимать месяцы |
|||
22
hhhh
27.02.15
✎
09:36
|
есть же более актуальные проблемы. Например
ДОБАВИТЬКДАТЕ(30.03.2013,1,МЕСЯЦ) ДОБАВИТЬКДАТЕ(31.03.2013,1,МЕСЯЦ) |
|||
23
Эмбеддер
27.02.15
✎
09:59
|
(21) например, когда на форме дата и кнопка "+ месяц" и "- месяц". это единственный случай, когда можно запутать пользователя (сначала он нажмем "+" а потом "-") и не попадет в ту же дату
|
|||
24
Провинциальный 1сник
27.02.15
✎
11:04
|
(20) Весьма спорно. Если год считать в днях - то да. Если в месяцах - то нет.
|
|||
25
hhhh
27.02.15
✎
11:13
|
(23) это круто, открыл предприятие, корректирую дату в документе 28.02.2014. Щелкаю следующий год, получаю 27.02.2015.
|
|||
26
Эмбеддер
27.02.15
✎
11:18
|
(24) коллега, все наоборот. в днях то зачем год прибавлять? добавлем 12 месяцев...
|
|||
27
Эмбеддер
27.02.15
✎
11:18
|
(25) а вот такого бага никак даже при всем желании добиться не получится
|
|||
28
hhhh
27.02.15
✎
11:23
|
(27) у разработчиков платформы получилось значит.
|
|||
29
Провинциальный 1сник
27.02.15
✎
11:42
|
(26) Как это? Был конец месяца, добавили 12 месяцев - стал не конец. Это не совсем логично.
|
|||
30
eklmn
гуру
27.02.15
✎
11:50
|
(29) вывод: високосный год придумали бабы!
|
|||
31
1Сергей
27.02.15
✎
11:54
|
(25) что-то гонишь
|
|||
32
Torquader
27.02.15
✎
12:50
|
На самом деле, вопрос даже не в високосном годе, а в том, что у месяцев разное число дней. Если, например, в 30 декабря прибавить три раза по месяцу, то получится 28 марта, а если сразу три месяца - то тридцатое.
Поэтому, в большинстве случаем вводят понятие технологического месяца, равного или 30 дней или 30.4 дня (с округлением результата до целого числа дней). Тогда получается более менее честно, и всякие вопросы "почему так" снимаются. В сервисах билинга по-другому просто нельзя, так как обычно оплачивается день услуги, а не месяц. |
|||
33
Провинциальный 1сник
27.02.15
✎
16:04
|
(32) Это где как. Чаще всего оплачивается месяц, но если месяц использован не полностью - то считается доля оплаты пропорционально дням.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |