Тема: как к дате прибавить определенное колличество дней
из базы данных получаю определенную дату {MERGEFIELD "Datе_post" \@ "dd.MM.yyyy"}, как сделать так, чтобы отображалась дата, которая наступит через 11 дней
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
из базы данных получаю определенную дату {MERGEFIELD "Datе_post" \@ "dd.MM.yyyy"}, как сделать так, чтобы отображалась дата, которая наступит через 11 дней
Попробуйте такой вариант:
{QUOTE
{SET Delay 11}
{SET mergeDate{ MERGEFIELD Date_post }}
{SET a{=INT((14-{ mergeDate \@ M})/12)}}
{SET b{={ mergeDate \@ yyyy}+4800-a}}
{SET c{={ mergeDate \@ M}+12*a-3}}
{SET d{ mergeDate \@ d}}
{SET jd{=d+INT((153*c+2)/5)+365*b+INT(b/4)-INT(b/100)+INT(b/400)-32045+Delay}}
{SET e{=INT((4*(jd+32044)+3)/146097)}}
{SET f{=jd+32044-INT(146097*e/4)}}
{SET g{=INT((4*f+3)/1461)}}
{SET h{=f-INT(1461*g/4)}}
{SET i{=INT((5*h+2)/153)}}
{SET dd{=h-INT((153*i+2)/5)+1}}
{SET mm{=i+3-12*INT(i/10)}}
{SET yy{=100*e+g-4800+INT(i/10)}}
"{dd}-{mm}-{yy}" \@ "dd.MM.yyyy"}
В приложенном файле документ и база данных с одним полем Date_post для проверки работы поля.
Количество прибавляемых дней задаётся в строке:
{SET Delay 11}
Дата задаётся в строке:
{SET mergeDate{ MERGEFIELD Date_post }}
Формат даты задаётся в последней строке:
"{dd}-{mm}-{yy}" \@ "dd.MM.yyyy"}
Все остальные строки служат для вычисления будущей даты. Алгоритм не мой, взят отсюда (файл DateCalc.zip)
Выдает: Ошибка! Ожидалась цифра.
Пример документа, где возникает ошибка. В каком формате хранится дата в базе?
Можно попробовать изменить одну строчку:
{SET mergeDate{ MERGEFIELD Date_post \@ "dd/MM/yyyy"}}
Формат даты: 8/25/2014. Поменял строку, выдает то же самое.
Какая именно строка выдаёт ошибку? Чтобы проверить это, включи отображение кодов полей (Alt+F9) и затем на каждой строке, начиная со второй, ставь курсор после первой открывающей фигурной скобки и нажимай Shift+F9. Это поле будет вычисляться и, если есть, показывать ошибку
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться