Смещение даты

Автор:sdo
Дата:01.06.2006
Просмотров:2479
Скачиваний:686
Оценка:, Оценок - 1
Скачать (zip-файл; Размер - 34475)

Обсудить в форуме

Описание

Исправлена ошибка определения високосного года, из-за которой разъезжались результаты функций всей библиотеки, если дата была дальше 28-го февраля.


Операции с датой - можно вычитать и прибавлять количество дней, месяцев, лет.
sdate.d32 экпортирует в РСЛ одну функцию getDateOffset:

getDateOffset(BeginDate:Date[,DaysOffset:Integer[,MonthsOffset:Integer[,YearsOffset:Integer]]]):Date

определяем, выходной ли согласно календарю рс-банк

var ret = dlmRSBankWorkDay (
path_calendar:string, //s* полный путь к файлу calendar.dbt
date_current:date, //s проверяемая дата
[Calend_record_len:integer]// sr если подать размер записи calendar.dbt то не вызовем B_STAT
);
вернет true/false - про выходной
либо String про ошибку
------------
* s - send, r - receive

Текст примера

 import sdate;
var datb = Date(1,1,2005);
var KoneC_Kvartala = getDateOffset(dat,0,3) - 1; /*1 апреля 2005*/
getDateOffset(dat,1,2, -4); /*2 марта 2001*/


var date_current = Date(1,1,2009);
var date_finish = getDateOffset(date_current,0,0,1);

var b_next = true;
var Calend_record_len = 0;
while ( (ValType(b_next)==V_BOOL ) AND (date_current <= date_finish) )
    b_next = dlmRSBankWorkDay(path_calendar, date_current, Calend_record_len);

    if ( ValType(b_next)==V_STRING )
        println(b_next);
    else
        println( "                         " + String(date_current ," ", b_next ));
        date_current = date_current + 1;
    end;
end;