Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Здравствуйте коллеги,
У меня на борту : 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)
date (weekend (MakeWeekDate (left (WeekYearField, 4), right (WeekYearField, 2))), 'DD-MM-YYYY')
It's not about that at all