我正在使用python 2.7,龍捲風web服務,peewee for database。離開時需要的指導在python中報告邏輯和函數
方案要獲得假報告每月26日至下月25
所以我這樣做下面的示例場景(但在邏輯上我堅持出來)
我得到FROM_DATE,TO_DATE從UI(選擇報告26-04-2016至25-05-2016)
Leavetable是表名(它有員工ID,從日離開,離開至今,working_days)
working_days只不過每個假(29-04-2016 - 2016年2月5日)的計數= 2(星期六和星期日排除的話)
對於特定月份 單個僱員的總假樣品葉
24-04-16 - 26-04-16,
28-04-16 - 29-04-16,
15-05-2016至29-05-2016
我的代碼(幫我改)
value=0
for report in Leavetable.select().where(Leavetable.Employee_ID==employees_id):
db_from_date = report.From_Date
if (from_date<=db_from_date and to_date>=db_from_date):
workingday=float(report.Working_Days)+value
value= workingday
print value
它獲得的價值= 3的相同休假以上的
24-04-16 - 26-04-16(這是必須採取1天但不是 此代碼工作了)
28-04-16 - 29-04-16(這是採取(2天)
15-05-2016至29-05-2016(26,27,28,29必須排除這4天)
指導我什麼是最簡單的解決方案,讓這個邏輯工作出來,請做必要的。
根據solarflare指導,我添加了下面的代碼。
但即使在邏輯上它不適合。上述情況假期15-05-2016至29-05-2016此離開還包括當我正在採取15-04-2016至15-05-2016的報告
value=0
for report in Leavetable.select().where(Leavetable.Employee_ID==employees_id):
for dt in rrule(DAILY, dtstart=report.From_Date,until=report.To_Date):
if (dt.weekday() < 5):
if (report.To_Date>=from_date and report.From_Date<=to_date):
value += 1
print value
我花了一段時間瞭解你在問什麼。請始終寫下你所期待的結果以及你所得到的結果(並使用正確的表格欄)。對於你的問題:你有兩個錯誤:1.你不能使用'Working_days'這個字段,因爲它總是在整個期間,你必須計算你的期間中的每一天,如果它是工作日,並且在from_date和至今。 2.在你的'if ...'中,你只能排除在from_date之前結束並在to_date之後開始的句點;現在,你會錯過下個月的第三期4天。 – Solarflare
請提供'SHOW CREATE TABLE'。 –
@Solarflare是的,你是R8這是沒有工作日的問題,它會花費很長的過程,所以我用了,如果你有任何解決方案或想法? –