Это решение работает правильно в декабре, что большинство ответов на этой странице нет. Сначала вам нужно сменить месяцы с базы 1 (т.е. Jan = 1) на базу 0 (т.е. Jan = 0) до использования модуля (%) или целочисленного деления (//), в противном случае ноябрь (11) плюс 1 месяц даст вам 12 , который при нахождении остатка (12% 12) дает 0.
(И не предлагайте «(месяц% 12) + 1» или Oct + 1 = декабрь!) [/ g1]
def AddMonths(d,x):
newmonth = ((( d.month - 1) + x ) % 12 ) + 1
newyear = d.year + ((( d.month - 1) + x ) / 12 )
return datetime.date( newyear, newmonth, d.day)
Однако ... Это не учитывает проблему, например, 31 января + один месяц. Итак, мы возвращаемся к OP - что вы подразумеваете, добавив месяц? Один soln должен отступить, пока вы не вернетесь на действительный день, учитывая, что большинство людей предпочтут последний день jan, плюс один месяц, равный последнему дню февраля. Это будет работать и в отрицательном числе месяцев. Доказательство:
>>> import datetime
>>> AddMonths(datetime.datetime(2010,8,25),1)
datetime.date(2010, 9, 25)
>>> AddMonths(datetime.datetime(2010,8,25),4)
datetime.date(2010, 12, 25)
>>> AddMonths(datetime.datetime(2010,8,25),5)
datetime.date(2011, 1, 25)
>>> AddMonths(datetime.datetime(2010,8,25),13)
datetime.date(2011, 9, 25)
>>> AddMonths(datetime.datetime(2010,8,25),24)
datetime.date(2012, 8, 25)
>>> AddMonths(datetime.datetime(2010,8,25),-1)
datetime.date(2010, 7, 25)
>>> AddMonths(datetime.datetime(2010,8,25),0)
datetime.date(2010, 8, 25)
>>> AddMonths(datetime.datetime(2010,8,25),-12)
datetime.date(2009, 8, 25)
>>> AddMonths(datetime.datetime(2010,8,25),-8)
datetime.date(2009, 12, 25)
>>> AddMonths(datetime.datetime(2010,8,25),-7)
datetime.date(2010, 1, 25)>>>
После почти одного дня борьбы я нашел решение в совершенно отдельной теме WSO2. Включить синхронизацию артефактов
В этой теме они просят создать общий ресурс SMB (для Windows) для каталога развертывания и клиентов, для целей APIM нам необходимо создать общий ресурс SMB для каталога / repositiry / deploy / server каталог.
Это всего лишь одна команда, чтобы создать символическую ссылку, как показано ниже:
mklink /D <APIM_HOME>/repositiry/deployment/server D:\WSO2\Shared\deployment\server
Нам нужно создать символическую ссылку в обоих узлах, чтобы указывать на одно и то же местоположение.
После этого не нужно вносить никаких изменений в конфигурацию на стороне APIM. Он будет работать по умолчанию, и у вас настроен следующий сценарий.