Итак, я пытаюсь определить функцию, которая добавляет месяцы. Но уже в начале я натыкаюсь на следующую проблему.
set testdate to (current date)
set the month of testdate to (1 as integer)
set the day of testdate to (1 as integer)
tell testdate to set {day} to {day + 32 * 4}
testdate
Я ожидаю получить хотя бы выходную дату в мае 2020 года (конечно, не первое мая, но что-то в начале ), однако, вместо этого получается
date "Montag, 26. August 2019 um 15:53:13"
. Может кто-нибудь объяснить мне, пожалуйста?
Если я, например, поменяю вышеприведенную «4» на «3», то получу ожидаемое
date "Montag, 6. April 2020 um 16:06:21"
С помощью red_menace, я смог реализовать следующую процедуру, которая добавляет месяцы.
on addMonths onto oldDate by m
copy oldDate to newDate
set newDate to newDate + (days * 31 * m)
if newDate's day is not oldDate's day then set newDate to (newDate) - ((newDate's day) - (oldDate's day)) * days
return newDate
end addMonths
(Тем не менее, объяснение, почему эта ошибка все еще не существует.)