Java 如何在MPXJ中将周末设置为工作日
我正在通过MPXJ库导出MS project中的项目,我有一个问题:Java 如何在MPXJ中将周末设置为工作日,java,mpxj,Java,Mpxj,我正在通过MPXJ库导出MS project中的项目,我有一个问题: 如何将特定日期周六(或周日)设置为工作日而不是周末?(在项目日历或其他地方) 例如,2014年10月18日(星期六)定为工作日,但另一个星期六必须是周末 public ProjectCalendar initCalendar(ProjectFile projectfile, int calendarId, Date startDate, Date endDate) { ProjectCalendar defa
如何将特定日期周六(或周日)设置为工作日而不是周末?(在项目日历或其他地方)
例如,2014年10月18日(星期六)定为工作日,但另一个星期六必须是周末
public ProjectCalendar initCalendar(ProjectFile projectfile, int calendarId, Date startDate, Date endDate) {
ProjectCalendar defaultCalendar = projectfile.addDefaultBaseCalendar();
/*Setup standart working week*/
defaultCalendar.setName("Standart");
defaultCalendar.setWorkingDay(Day.MONDAY, DayType.WORKING);
defaultCalendar.setWorkingDay(Day.THURSDAY, DayType.WORKING);
defaultCalendar.setWorkingDay(Day.WEDNESDAY, DayType.WORKING);
defaultCalendar.setWorkingDay(Day.TUESDAY, DayType.WORKING);
defaultCalendar.setWorkingDay(Day.FRIDAY, DayType.WORKING);
defaultCalendar.setWorkingDay(Day.SATURDAY, DayType.NON_WORKING);
defaultCalendar.setWorkingDay(Day.SUNDAY, DayType.NON_WORKING);
ProjectCalendarHours pch;
pch = defaultCalendar.addCalendarHours(Day.MONDAY);
pch.addRange(ProjectCalendar.DEFAULT_WORKING_MORNING);
pch.addRange(ProjectCalendar.DEFAULT_WORKING_AFTERNOON);
pch = defaultCalendar.addCalendarHours(Day.THURSDAY);
pch.addRange(ProjectCalendar.DEFAULT_WORKING_MORNING);
pch.addRange(ProjectCalendar.DEFAULT_WORKING_AFTERNOON);
pch = defaultCalendar.addCalendarHours(Day.WEDNESDAY);
pch.addRange(ProjectCalendar.DEFAULT_WORKING_MORNING);
pch.addRange(ProjectCalendar.DEFAULT_WORKING_AFTERNOON);
pch = defaultCalendar.addCalendarHours(Day.TUESDAY);
pch.addRange(ProjectCalendar.DEFAULT_WORKING_MORNING);
pch.addRange(ProjectCalendar.DEFAULT_WORKING_AFTERNOON);
pch = defaultCalendar.addCalendarHours(Day.FRIDAY);
pch.addRange(ProjectCalendar.DEFAULT_WORKING_MORNING);
pch.addRange(ProjectCalendar.DEFAULT_WORKING_AFTERNOON);
/* setup holydays*/
List<Date> workingHollidays = DBHelper.getWorkingHolidays(ppmCalendarId, startDate, endDate);
for (Date work : workingHollidays) {
ProjectCalendarException ex = defaultCalendar.addCalendarException(work, work);
}
/*There is I need change stendart week and setup 6-days working week (Saturday is work day) */
/*something like that*/
Date workindDay = new SimpleDateFormat("dd.MM.yyyy").parse("18.10.2014");
defaultCalendar.setWorkingDay(workindDay, DayType.NON_WORKING); // This code not work
pch = defaultCalendar.addCalendarHours(workindDay); // This code not work
pch.addRange(ProjectCalendar.DEFAULT_WORKING_MORNING);
pch.addRange(ProjectCalendar.DEFAULT_WORKING_AFTERNOON);
}
public ProjectCalendar initCalendar(ProjectFile ProjectFile,int calendar id,Date startDate,Date endDate){
ProjectCalendar defaultCalendar=projectfile.AddDefaultBaseCendar();
/*设置标准工作周*/
defaultCalendar.setName(“标准”);
defaultCalendar.setWorkingDay(Day.MONDAY,DayType.WORKING);
defaultCalendar.setWorkingDay(Day.周四,DayType.WORKING);
defaultCalendar.setWorkingDay(Day.周三,DayType.WORKING);
defaultCalendar.setWorkingDay(Day.周二,DayType.WORKING);
defaultCalendar.setWorkingDay(Day.FRIDAY,DayType.WORKING);
defaultCalendar.setWorkingDay(Day.SATURDAY,DayType.NON_WORKING);
defaultCalendar.setWorkingDay(Day.SUNDAY,DayType.NON_WORKING);
5小时pch;
pch=defaultCalendar.addCalendarHours(Day.MONDAY);
pch.addRange(ProjectCalendar.DEFAULT\u WORKING\u MORNING);
pch.addRange(ProjectCalendar.DEFAULT\u WORKING\u午后);
pch=defaultCalendar.addCalendarHours(天、星期四);
pch.addRange(ProjectCalendar.DEFAULT\u WORKING\u MORNING);
pch.addRange(ProjectCalendar.DEFAULT\u WORKING\u午后);
pch=defaultCalendar.addCalendarHours(Day.周三);
pch.addRange(ProjectCalendar.DEFAULT\u WORKING\u MORNING);
pch.addRange(ProjectCalendar.DEFAULT\u WORKING\u午后);
pch=defaultCalendar.addCalendarHours(天.星期二);
pch.addRange(ProjectCalendar.DEFAULT\u WORKING\u MORNING);
pch.addRange(ProjectCalendar.DEFAULT\u WORKING\u午后);
pch=defaultCalendar.addCalendarHours(Day.FRIDAY);
pch.addRange(ProjectCalendar.DEFAULT\u WORKING\u MORNING);
pch.addRange(ProjectCalendar.DEFAULT\u WORKING\u午后);
/*设置假日*/
List workingHollidays=DBHelper.getWorkingHolidays(ppmcalendard、startDate、endDate);
用于(工作日期:工作日){
ProjectCalendarException ex=defaultCalendar.addCalendarException(工作,工作);
}
/*我需要更改stendart周并设置6天工作周(周六为工作日)*/
/*诸如此类*/
日期工作日=新的简化格式(“dd.MM.yyyy”).parse(“18.10.2014”);
defaultCalendar.setWorkingDay(workindDay,DayType.NON_WORKING);//此代码无效
pch=defaultCalendar.addCalendarHours(workindDay);//此代码无效
pch.addRange(ProjectCalendar.DEFAULT\u WORKING\u MORNING);
pch.addRange(ProjectCalendar.DEFAULT\u WORKING\u午后);
}
而在ountput中,Microsoft Project xml的标记如下所示:
<Calendar>
...
<WeekDay>
<DayType>
0
</DayType>
<DayWorking>
1
</DayWorking>
<TimePeriod>
<FromDate>2014-10-18T00:00:00</FromDate>
<ToDate>2014-10-18T23:59:00</ToDate>
</TimePeriod>
<WorkingTimes>
<WorkingTime>
<FromTime>09:00:00</FromTime>
<ToTime>13:00:00</ToTime>
</WorkingTime>
<WorkingTime>
<FromTime>14:00:00</FromTime>
<ToTime>18:00:00</ToTime>
</WorkingTime>
</WorkingTimes>
</WeekDay>
...
</Calendar>
...
0
1.
2014-10-18T00:00:00
2014-10-18T23:59:00
09:00:00
13:00:00
14:00:00
18:00:00
...
谢谢。我找到了答案。有将自定义日期设置为工作日期的代码:
Date workindDay = new SimpleDateFormat("dd.MM.yyyy").parse("18.10.2014");
ProjectCalendarException ex = defaultCalendar.addCalendarException(workindDay, workindDay);
ex.addRange(ProjectCalendar.DEFAULT_WORKING_MORNING);
ex.addRange(ProjectCalendar.DEFAULT_WORKING_AFTERNOON);
范围的顺序很重要。请提供一些您迄今为止尝试过的示例代码。