Sorry, I think I didn't make myself clear enough.
Yes, of course user need to give the day of the week for fortnightly, and day of the month and month for quarterly and half yearly.
For quarterly and half yearly, now my solution is to calculate the month list in Java program fist. For example, if user want a quarterly job run on 1700, 5th of Apr, then I will generate the month list as 4,7,10,1, and then the cron expression will be something like 0 0 17 5 4,7,10,1 ? *.
I think your expression not good enough. User want the job run every two weeks exactly. So if user want the job start on 1st of Jan 08, it's a Tuesday, then actually it should run as follows:
First Tuesday of Jan 2008
Third Tuesday of Jan 2008
Fifth Tueday of Jan 2008
Second Tuesday of Feb 2008
Forth Tuesday of Feb 2008
As you can see, we cannot fix it to first, third and fifth of a month. It's changing as time goes.
I ever tried 3/3 or 6/6 form and it's not really correct. 4/3 actually means start from Apr of each year, and the increment is 3. So it will miss Jan. Not only month, other fields are also same. For example 20/1 means run the job every day of every month ONLY 20th onwards.
[ March 20, 2008: Message edited by: vichy baby ]