Att ta bort lördag och söndag är lätt. Då skapar du bara en ny Calendar (t.ex. en GregorianCalendar eftersom det är den kalendern vi går efter i västvärlden) och ur denna hämtar du Calendar.get(Calendar.DAY_OF_WEEK). Detta returnerar en int som kontrollerar om den är skiljd från Calendar.SATURDAY och Calendar.SUNDAY.
Vad gäller helgdagar så skulle jag göra så att jag la in alla dagar som jag inte ville att uppdateringen skulle köras i en HashMap baserat på t.ex en Date och med ett statisk blajvärde. Sedan när jag uppdateringen körs så gör man en slagning mot HashMapen och om man får något tillbaka så struntar man i att köra.
Nått sånt här (inte testat)
HashMap dateMap = new HashMap();
final String BLAJ_VALUE = "gummilurka";
dateMap.put(new GregorianCalendar(2004, 1, 19), BLAJ_VALUE);
dateMap.put(new GregorianCalendar(2004, 1, 26), BLAJ_VALUE);
// Jag vill inte att det körs på lördag och söndag samt den 19 och 26 feb
GregorianCalendar dayToRun;
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
for (int dayOfMonth = 1; dayOfMonth < 30; dayOfMonth++)
{
dayToRun = new GregorianCalendar(2004, 1, dayOfMonth);
int dow = dayToRun.get(Calendar.DAY_OF_WEEK);
out.println("dow= " + dow);
// Is is saturday or sunday?
if((dow != Calendar.SATURDAY) && (dow != Calendar.SUNDAY))
{
// Check if we have the date in the map
if(dateMap.get(dayToRun) == null)
{
System.out.println(sdf.format(dayToRun.getTime())) + "is a good day to run.";
}
else
{
System.out.println(sdf.format(dayToRun.getTime())) +"is found in No-Run-List.";
}
}
else
{
System.out.println(sdf.format(dayToRun.getTime())) +" is a saturday or sunday. Nothing to run!";
}
}
/Lime