|  24.01.2011, 10:13 | #1 | 
| Участник | Работа с датами 
			
			Доброго времени суток. Как можно получить разницу между датами в месяцах, существует ли встроенная функция для этих целей? Последний раз редактировалось AngelDominantes; 24.01.2011 в 10:19. | 
|  | 
|  24.01.2011, 10:24 | #2 | 
| Axapta | 
			
			Что вы подразумеваете под словами "разницу между датами в месяцах"? Сколько месяцев будет 20 февраля-15 января? (20/28)+(31-15)/31=1.23 месяца?
		 | 
|  | |
| За это сообщение автора поблагодарили: Gustav (1), AngelDominantes (1). | |
|  24.01.2011, 10:29 | #3 | 
| Moderator | |
|  | |
| За это сообщение автора поблагодарили: AngelDominantes (1). | |
|  24.01.2011, 10:31 | #4 | 
| Участник | Цитата: Можно конечно использовать такой алгоритм. Если date1>date2 X++: i = year(_date); j = year(_date2); s = (i - j)*12; i = mthOfyr(_date); j = mthOfyr(_date2); result = (i-j)+s; Последний раз редактировалось AngelDominantes; 24.01.2011 в 10:41. | 
|  | 
|  24.01.2011, 10:35 | #5 | 
| Участник | |
|  | 
|  24.01.2011, 10:44 | #6 | 
| Участник | 
			
			В Аксапта 3 нашел метод MntInterval_Ru() класса Global: X++: static void TestData(Args _args) { TransDate startDate = str2date("01.07.2010", 123); TransDate endDate = str2date("21.01.2011", 123); ; info(int2str(MntInterval_Ru(startDate, endDate))); } X++: static int MntInterval_Ru(Date BeginDate, Date endDate) { int Result=0; Date _Date=BeginDate; ; //Количество полных месяцев между датами Do { _Date=nextmth(_Date); Result++; } while (_Date<=endDate); return Result-1; } 
				__________________ С уважением, Александр. Последний раз редактировалось samolalex; 24.01.2011 в 10:46. | 
|  | |
| За это сообщение автора поблагодарили: AngelDominantes (1). | |
|  24.01.2011, 11:23 | #7 | 
| Участник | 
			
			В принципе, по приведенной ссылке уже все есть. В смысле, упоминание про IntvNo(). Только добавлю, что в данном случае в качестве 3 параметра следует использовать значение IntvScale::YearMonth, а не IntvScale::Month. Поскольку следует учитывать возможность перехода через год. X++: static void test(Args _args) { FromDate fromDate = 31\12\2010; ToDate toDate = 01\01\2011; ; print abs(intvNo(fromDate, toDate, IntvScale::YearMonth)); pause; } | 
|  |