Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Chernov
Creator
Creator

Ошибка в функции MakeWeekDate

Здравствуйте коллеги,

У меня на борту : QV 11.20 SR6.

Сталкивался ли кто с проблемой при генерации дат через функцию MakeWeekDate ?

Привожу пример, у меня есть переменная vi = 02.07.2017 , определяем по ней - год, неделю и день недели:

Year ('$(vi)') = 2017

Week('$(vi)') =  27

WeekDay('$(vi)') = вс (6ой день недели)

Чтобы получить 6-ой день, можно преобразовать результат WeekDay сразу в Num, это работает так: = Num(WeekDay('$(vi)') ) = 6

Я проверял с Num(WeekDay) и просто WeekDay - результат одинаковый, так вот...

Теперь, я хочу создать дату, по этому же дню недели, но в прошлом году, собственно мне нужно использовать для этого такую функцию со значениями : =MakeWeekDate( Year ('$(vi)')-1, Week('$(vi)') , WeekDay('$(vi)'))

Но у меня почему то возвращается не та дата, которая должна быть, а именно : 10.07.2016 (если проверить через Week эту дату - то у нас вернется 28-я неделя, а в исходном значении у нас 27-я неделя! - т.е. откуда то прибавляется одна неделя... собственно в этом и ошибка)

Делаем проверку: =Year ('$(vi)')-1 = 2016 - всё правильно.

Получается что у нас передаются в функцию такие значения : 2016 , 27 , вс

Пробуем вручную, без переменных : = =MakeWeekDate( 2016, 27, 6) - результат такой же - 10.07.2016 ... чтобы получить дату 03.07.2016 нужно дополнительно отрезать одну неделю от исходной даты и тогда результат будет таким какой и нужен - вопрос - почему эта функция работает так как она работает ?


Преобразование даты 02.07.2017 в дату 03.07.2016 делается таким образом: =MakeWeekDate( Year ('$(vi)')-1, Week('$(vi)')-1 , WeekDay('$(vi)')) ; и при этом, обе даты соответствуют 27-ой неделе и являются воскресеньями, разница только в годах (2017 и 2016)


img-2017-07-04-23-31-15.png

img-2017-07-04-23-28-50.png

3 Replies
tajmohamed30
Creator III
Creator III

date (weekend (MakeWeekDate (left (WeekYearField, 4), right (WeekYearField, 2))), 'DD-MM-YYYY')

Chernov
Creator
Creator
Author

It's not about that at all