Ajax 板


LINE

到下午五點下班 請假從某一段時間到某一段時間 當請假時間超過下物五點後 時間不計算 所以假如從昨天1:00請到明天8:00 共有16小時 因為八點之後才算上班時間請假 不知道該如何做 還有星期6.日不上班要扣掉 謝謝! 我試過第一種方式用字串比對 不過象10以下會把0省略掉 例如9:07分和08:30比較時 沒法比出正常時間 我又試著用全部的時間 扣掉(8:30-開始時間)和(結束時間-17:30) 分成四種情形下去判斷 當開始比8:30大和比8:30小 結束比17:30大和結束比17:30小 之間的天數每天扣掉(24-9)小時 可是當開始時間在17:30過後 時間就會計算錯誤 而星期6.日則又getDay()函數求出星期6或星期天 扣掉當天的9小時 不過又遇到一個問題 當請假時間在星期6或星期天 結束時間在星期6或星期天 算的時間又會錯誤 我試用先把星期6或星期天請假的時間加9小時回來 再用當天17:30扣掉請假開始時間的數值 在囚出來再用全部時數去扣掉它 不過算出來的時間一直出錯 我在想還有另依種方式 用陣列去做 var day[i]=new Date(年,月,日,開始時間) 不過陣列指派不太熟常會出現錯誤 我想用開始時間跟結束時間求出來後 中間的時間當遇到6.日的話就去掉 可以提供ㄧ下寫法嗎 謝謝 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 var start_time1=new Date(b,a-1,c,08,30,00) var end_time1=new Date(bb,aa-1,cc,17,30,00) if(start_time<=start_time1 && end_time>=end_time1) { 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) { 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 && end_time>=end_time1) { 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 && end_time<=end_time1){ 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 } 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) var start_time2=new Date(b,a-1,c,17,30,00) var end_time2=new Date(b,a-1,c,08,30,00) /* debugger; if(ii==0||ii==6){ start_time_diff=start_time2-start_time if(start_time_diff.getHour>=8) {} if(start_time_diff.getHour<8) { start_time_diff1=start_time_diff start_time_diff_hour=start_time_diff/(1000*60*60) start_time_diff_minute=start_time_diff1-(parseInt(start_time_diff_hour)*60*60*1000) start_time_diff_minute=start_time_diff_minute/(60*1000) time_hour_minute+=9} time_hour_minute+=(start_time-start_time1)/(60*60*1000) time_hour_minute-=start_time_diff_hour time_minute-=start_time_diff_minute } if (jj==0||jj==6){ end_time_diff=end_time-end_time2 end_time_diff1=end_time_diff end_time_diff_hour=end_time_diff/(1000*60*60) end_time_diff_minute=end_time_diff1-(parseInt(end_time_diff_hour)*60*60*1000) end_time_diff_minute=end_time_diff_minute/(60*1000) time_hour_minute+=9 time_hour_minute-=end_time_diff_hour time_minute-=end_time_diff_minute } --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.227.23.31
1F:→ b12031106:你現在code寫到什麼程度 貼出來看看 08/10 00:43
2F:→ minejel:你想的好複雜...不就只要判斷每天請假的時間是不是在上班 08/10 01:11
3F:→ minejel:時間內就好了,還去煩惱非上班時間要怎麼扣@@" 08/10 01:11
4F:→ minejel:想的太複雜的話,你可以先用if把所有狀態挑出來,慢慢再精練 08/10 01:14
※ 編輯: hannsg830 來自: 61.221.134.110 (08/10 08:38)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP