[ajax]請問計算時數

看板Ajax作者 (冰)時間11年前 (2012/08/10 17:38), 編輯推噓1(107)
留言8則, 4人參與, 最新討論串1/1
我更改了下面 function show_day() { if (START_DATE.value=='') {return false;} if (END_DATE.value=='') {return false;} var date1 = DateUtils.toDate(START_DATE.value).format('yyyymmdd') a=(date1.substring(4,6)) b=(date1.substring(0,4)) c=(date1.substring(6,8)) var start_time=new Date(b,a-1,c,START_TIME_HOURS.value,START_TIME_MIN.value,00) var date2 = DateUtils.toDate(END_DATE.value).format('yyyymmdd') aa=(date2.substring(4,6)) bb=(date2.substring(0,4)) cc=(date2.substring(6,8)) var end_time=new Date(bb,aa-1,cc,END_TIME_HOURS.value,END_TIME_MIN.value,00) var time_hour_minute=0 var start_time1=new Date(b,a-1,c,08,30,00) var end_time1=new Date(bb,aa-1,cc,17,30,00) var start_time2=new Date(b,a-1,c,17,30,00) var end_time2=new Date(b,a-1,c,08,30,00) var time_minute=0 if(start_time<=start_time1 && end_time>=end_time1) { alert("E") time_hour_minute=(end_time-start_time)-(end_time-end_time1)-(start_time1-start_time) time_hour_minute1=time_hour_minute time_hour_minute=time_hour_minute/(1000*60*60) time_minute=time_hour_minute1-(parseInt(time_hour_minute)*60*60*1000) time_minute=time_minute/(60*1000) if(time_hour_minute>24) time_hour_minute=time_hour_minute-(parseInt((time_hour_minute/24)))*15 } else if(start_time<=start_time1 && end_time<=end_time1) { alert("D") time_hour_minute=(end_time-start_time)-(start_time1-start_time) time_hour_minute1=time_hour_minute time_hour_minute=time_hour_minute/(1000*60*60) time_minute=time_hour_minute1-(parseInt(time_hour_minute)*60*60*1000) time_minute=time_minute/(60*1000) if(time_hour_minute>24) time_hour_minute=time_hour_minute-(parseInt((time_hour_minute/24)))*15 } else if(start_time>=start_time1 && start_time<=start_time2 && end_time>=end_time1) { alert("C") debugger; time_hour_minute=(end_time-start_time)-(end_time-end_time1) time_hour_minute1=time_hour_minute time_hour_minute=time_hour_minute/(1000*60*60) time_minute=time_hour_minute1-(parseInt(time_hour_minute)*60*60*1000) time_minute=time_minute/(60*1000) if(time_hour_minute>24) time_hour_minute=time_hour_minute-(parseInt((time_hour_minute/24)))*15 } else if(start_time>=start_time1 && start_time<=start_time2 && end_time<=end_time1){ alert("B") time_hour_minute=(end_time-start_time) time_hour_minute1=time_hour_minute time_hour_minute=time_hour_minute/(1000*60*60) time_minute=time_hour_minute1-(parseInt(time_hour_minute)*60*60*1000) time_minute=time_minute/(60*1000) if(time_hour_minute>24) time_hour_minute=time_hour_minute-(parseInt((time_hour_minute/24)))*15 } else if (start_time>=start_time2){ if(end_time<end_time2) {alert("AA") var d=(parseInt(c)+1) var start_time3=new Date(b,a-1,d,00,00,00)//隔天0時,當小於17:00大於8:00 var end_time3=new Date(bb,aa-1,cc,00,00,00)//結束當天0時 time_hour_minute=(end_time-start_time)-(start_time3-start_time)+(end_time-end_time3) time_hour_minute/=(1000*24*60*60)//換算幾天 time_hour_minute*=9 } if(end_time>end_time2 && end_time<end_time1) {alert("BB") debugger; var d=(parseInt(c)+1) var start_time3=new Date(b,a-1,d,00,00,00)//隔天0時,當小於17:00大於8:00 var end_time3=new Date(bb,aa-1,cc,00,00,00)//結束當天0時 time_hour_minute=(end_time-start_time)-(start_time3-start_time)-(end_time-end_time3) time_hour_minute/=(1000*24*60*60)//換算幾天 time_hour_minute*=9 var time_diff=parseInt((end_time-end_time2)/(1000*60*60))//換算小時 time_hour_minute+=time_diff //加上最後一天時間 time_minute=((end_time-end_time2)-(time_diff*1000*60*60))/1000*60//換算分鐘 } else {alert("CC") time_hour_minute+=9 } } var i=(start_time.getDate()) var j=(end_time.getDate()) var ii=(start_time.getDay()) var jj=(end_time.getDay()) var start_time_diff_hour=0 var start_time_diff_minute=0 var count_day=0 for(k=i;k<=j;k++){ date=new Date('b','a-1',k) if(date.getDay()==0 || date.getDay()==6) count_day+=1 } time_hour_minute=time_hour_minute-(count_day*9) 還是不行 十間計算 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.221.134.110

08/12 13:52, , 1F
你這樣到底期待誰會把他看完啊...
08/12 13:52, 1F

08/13 21:56, , 2F
你先不要管偵錯什麼的 純粹把邏輯理出來
08/13 21:56, 2F

08/13 21:57, , 3F
因為這個純粹是邏輯的問題 跟程式基本上沒什麼關係
08/13 21:57, 3F

08/13 22:00, , 4F
而且我很懷疑你到底知不知道自己在寫什麼..
08/13 22:00, 4F

08/15 17:34, , 5F
把程序多拆成幾個function,每個function都有他的目的
08/15 17:34, 5F

08/15 17:37, , 6F
寫一個函式先計算這個時段共有幾個工作天
08/15 17:37, 6F

08/15 17:37, , 7F
再寫一個函式去處理頭尾兩天
08/15 17:37, 7F

08/16 23:22, , 8F
你的寫法好多地雷 XD
08/16 23:22, 8F
文章代碼(AID): #1G9DQMHv (Ajax)