AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.01.2011, 10:13   #1  
AngelDominantes is offline
AngelDominantes
Участник
 
76 / 9 (1) +
Регистрация: 30.12.2010
Работа с датами
Доброго времени суток.
Как можно получить разницу между датами в месяцах, существует ли встроенная функция для этих целей?

Последний раз редактировалось AngelDominantes; 24.01.2011 в 10:19.
Старый 24.01.2011, 10:24   #2  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Что вы подразумеваете под словами "разницу между датами в месяцах"? Сколько месяцев будет 20 февраля-15 января? (20/28)+(31-15)/31=1.23 месяца?
За это сообщение автора поблагодарили: Gustav (1), AngelDominantes (1).
Старый 24.01.2011, 10:29   #3  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Функция, вычисляющая разницу между датами.
За это сообщение автора поблагодарили: AngelDominantes (1).
Старый 24.01.2011, 10:31   #4  
AngelDominantes is offline
AngelDominantes
Участник
 
76 / 9 (1) +
Регистрация: 30.12.2010
Цитата:
Сообщение от oip Посмотреть сообщение
Что вы подразумеваете под словами "разницу между датами в месяцах"? Сколько месяцев будет 20 февраля-15 января? (20/28)+(31-15)/31=1.23 месяца?
Нет это именно число целых месяцев не важно какое число, даже если между 1 января и 31 декабря должен показать 1.
Можно конечно использовать такой алгоритм. Если 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  
AngelDominantes is offline
AngelDominantes
Участник
 
76 / 9 (1) +
Регистрация: 30.12.2010
Спасибо
Старый 24.01.2011, 10:44   #6  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
В Аксапта 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  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
В принципе, по приведенной ссылке уже все есть. В смысле, упоминание про 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;
}
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
функционал Работа с документами и создание договора в Word GM2005 DAX: Функционал 5 28.09.2009 14:49
Очередная ошибка. Работа с датами raz DAX: Программирование 1 01.10.2008 10:10
Доступ к меню "Работа с документами" Kuat DAX: Администрирование 4 16.11.2007 17:07
Совместная работа заказчика и исполнителя в разных или одном слое? Кузин Владимир В. DAX: Программирование 6 08.08.2006 10:02

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:06.