Код:
import bitel.billing.common.TimeUtils.*;
import bitel.billing.server.util.*;
public void main( setup, con, conSlave )
{
//получаем установленную дату закрытого периода
ClosedDateChecker cdc = new ClosedDateChecker();
closeDate = cdc.getClosePeriodDate();
print("closeDate = " + closeDate);
//получаем последнее число предыдущего месяца
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -1);
int lastDay = calendar.getActualMaximum(Calendar.DATE);
calendar.set(Calendar.DATE, lastDay);
print("calendar" + calendar);
//если установленная дата ранее чем полученная - выставляем в закрытом периоде полученную дату
if( TimeUtils.dateBefore(closeDate, calendar) ){
print("Дата закрытого периода ранее конца предыдущего месяца. Устанавливаю дату закрытия");
cdc.setClosePeriodDate(calendar.getTime());
}
}
Вот скрипт (с первого поста, только добавил выводы дат)
Вот его вывод при запуске вручную. Дата закрытого периода выставляется.
Код:
GENERATE_TIME: 14.05.12 12:12:20
EXECUTION_STOP_TIME: 14.05.12 12:12:20
PROCESS_TIME: 25
OUT:
closeDate = java.util.GregorianCalendar[time=1331582400000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="W-SU",offset=14400000,dstSavings=0,useDaylight=false,transitions=78,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2012,MONTH=2,WEEK_OF_YEAR=12,WEEK_OF_MONTH=3,DAY_OF_MONTH=13,DAY_OF_YEAR=73,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=14400000,DST_OFFSET=0]
calendarjava.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="W-SU",offset=14400000,dstSavings=0,useDaylight=false,transitions=78,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2012,MONTH=3,WEEK_OF_YEAR=21,WEEK_OF_MONTH=3,DAY_OF_MONTH=30,DAY_OF_YEAR=135,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=0,HOUR_OF_DAY=12,MINUTE=12,SECOND=20,MILLISECOND=671,ZONE_OFFSET=14400000,DST_OFFSET=0]
Дата закрытого периода ранее конца предыдущего месяца. Устанавливаю дату закрытия
А вот задача

А вот ее вывод
Код:
GENERATE_TIME: 14.05.12 12:20:04
EXECUTION_STOP_TIME: 14.05.12 12:20:04
PROCESS_TIME: 31
OUT:
closeDate = java.util.GregorianCalendar[time=1335729600000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="W-SU",offset=14400000,dstSavings=0,useDaylight=false,transitions=78,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2012,MONTH=3,WEEK_OF_YEAR=19,WEEK_OF_MONTH=6,DAY_OF_MONTH=30,DAY_OF_YEAR=121,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=5,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=14400000,DST_OFFSET=0]
calendarjava.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="W-SU",offset=14400000,dstSavings=0,useDaylight=false,transitions=78,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2012,MONTH=3,WEEK_OF_YEAR=21,WEEK_OF_MONTH=3,DAY_OF_MONTH=30,DAY_OF_YEAR=135,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=0,HOUR_OF_DAY=12,MINUTE=20,SECOND=4,MILLISECOND=279,ZONE_OFFSET=14400000,DST_OFFSET=0]
А условие if не выполнилось. А почему?
Дата не поменялась
