|
07.06.2004, 13:48 | #1 |
Решили жить вечно?
|
Как вычесть из одной даты другую?
Пишу
display TransDate DelayDate() { date date1; date date2; ; date1 = VendTrans.DueDate; date2 = VendTrans.TransDate; date1 -= date2; return (date1); } Возвращает всегда ноль, даже когда даты разные. Что не так? Мне нужно получить количество дней между этими датами |
|
27.10.2005, 14:14 | #2 |
Участник
|
А вот аналогичный вопрос по теме!
Есть ли в Аксапте готовый класс, который выдает разницу дат в годах, месяцах и днях!? Например: Дата1-Дата2 = 5 лет 2 месяца 10 дней. |
|
27.10.2005, 14:34 | #3 |
Участник
|
Цитата:
Сообщение от Bug
А вот аналогичный вопрос по теме!
Есть ли в Аксапте готовый класс, который выдает разницу дат в годах, месяцах и днях!? Например: Дата1-Дата2 = 5 лет 2 месяца 10 дней. Сколько будет составлять разница между 28 января и 1 марта? 1 месяц и 1 день или 1 месяц и 3 дня? Т.е. ты сначала прибавишь к 28 января 1 месяц, а потом определишь разницу между 28 февраля и 1 марта. В этом случае имеем 1 месяц и 1 день Или же определишь количество дней между 28 январа и 1 февраля (это 3 дня), а потом прибавишь 1 месяц. В этом случае получим 1 месяц и 3 дня. Оба варианта правильные. Весь вопрос в том, что именно считать "правильным". Ну, а чтобы определить разные интервалы посмотри функцию IntvNo() Код: static void Job1(Args _args) { FromDate fromDate = 28\01\2005; ToDate toDate = 17\03\2005; ; info(strFmt("from %1 to %2",fromDate,toDate)); info(strfmt('Лет IntvNo() %1',IntvNo(toDate,fromDate,IntvScale::Year))); info(strfmt('Месяцев IntvNo() %1',IntvNo(toDate,fromDate,IntvScale::Month))); info(strfmt('Дней IntvNo() %1',IntvNo(toDate,fromDate,IntvScale::Day))); return; } |
|
27.10.2005, 14:49 | #4 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
Основная проблема в том, как именно определять эту разницу...
...Ну, а чтобы определить разные интервалы посмотри функцию IntvNo() Но с этой функцией тоже не все так уж очевидно! Последний раз редактировалось Bug; 27.10.2005 в 15:14. |
|
27.10.2005, 14:18 | #5 |
Участник
|
Нету,я тут тоже недавно озадачился функцией разницы в месяцах, пришлось самому ваять
|
|
27.10.2005, 15:17 | #6 |
Участник
|
Не надо глумится количеством дней в месяце, оперируйте функциями MthOfYr, EndMth и т.д.. допустим вот так:
возвращает количество полных месяцев в интервале дат static int mthNum(date _fomDate, date _toDate) { return (Year(_toDate) * 12 + MthOfYr(_toDate) - 1) - (Year(_fomDate) * 12 + MthOfYr(_fomDate) - 1); } |
|
27.10.2005, 16:05 | #7 |
Участник
|
можно посмотреть в
\Classes\RAssetTableInterval_Month\monthDifference |
|