我需要製作一個應用程序來統計它一直有多少個工作日。例如是2014年9月23日。這是本月的第17個工作日。顯然它排除了週末。當這個月結束時,櫃檯將重新開始。所以,當日期是十月1日那麼計數器將等於1.用日期參數計算工作日
我已經有了這組代碼它今天的日期是11-24-14正確工作。輸出是17,這是正確的。但在其他日期這是錯誤的。我沒有進行一些驗證,例如週末檢查,因爲我正在測試邏輯。
這裏的代碼塊:
Date dateToday = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(dateToday);
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_WEEK);
int week = cal.get(Calendar.WEEK_OF_MONTH);
int dayNo=0;
System.out.println("year= " + year + " month= " + month + " day= "
+ day + " week= " + week);
if ((day == Calendar.SATURDAY) && (day == Calendar.SUNDAY)) {
willPush = false;
}else{
if(week>4){
week-=1;
}
if(week==1){
dayNo+=day-1;
}else if(week==2){
dayNo=day+5;
}else if(week==3){
dayNo=day+10;
}else if(week==4){
dayNo=day+15;
}else if(week==5){
dayNo=day+20;
}
dayNo-=1;
}
System.out.println("DayNO: "+dayNo);
更新:只是想通了,這個邏輯是有缺陷的,非常有缺陷的。將嘗試一種新的方法,我正在考慮循環遍歷本月的日子,然後檢查它們是否是週末。不知道這是不是最好的主意。
你不能這樣做,沒有理由的第一週是5個工作日長(並且它打破了你所有的邏輯) – yunandtidus 2014-11-24 08:40:33
是的。在發佈此信息後發現這一點。我一直在嘗試一些新的邏輯 – 2014-11-24 08:43:54
如果你選擇接受它,你的任務是構建一個算法,計算O(1)中的這個。提示:您的範圍將包括(i)開始存根,(ii)整數週數,(iii)末端存根。對於(i)和(iii)計算週末天數,因爲(ii)工作日是總天數* 5/7。這就是我在生產中的做法(爲具有不同週末定義的場所提供津貼)。當前的答案很糟糕,因爲它們是O(N)。 – Bathsheba 2014-11-24 09:23:39