我正在尝试将多个工作日添加到 Django 中的日期字段。这适用于产品订购,我们对不同产品有不同的交货时间,我们希望为每种产品生成一个目标日期。
例如,产品 X 可能需要 10 个工作日才能交付,如果此产品是在 2013 年 1 月 3 日星期五订购的,则目标日期最终应该是 2013 年 3 月 15 日星期五(它不包括订购日期作为一天) .
我环顾四周,似乎有一些 python 库可以做这种事情,但这一切似乎都过于复杂。我认为会有一个相当简单的方法来做到这一点。
** 编辑 **
我现在正在使用 BusinessHours PyPi 包,但似乎遇到了一些问题。
他们给你一个如何调用包的例子。
eg: Class: BusinessHours(datetime1,datetime2,worktiming=[9 ,18],weekends=[6,7],holidayfile=None)
Class Parameters:
datetime1 - The datetime object with the starting date.
datetime2 - The datetime object with the ending date.
worktiming - The working office hours . A list containing two values start time and end time
weekends - The days in a week which have to be considered as weekends sent as a list, 1 for monday ... 7 for sunday.
holidayfile - A file consisting of the predetermined office holidays.Each date starts in a new line and currently must only be in the format dd-mm-yyyy
from BusinessHours import BusinessHours
from datetime import datetime
testing = BusinessHours(datetime(2007,10,15),datetime.now())
print testing.getdays()
使用此信息,我制作了以下测试脚本
from BusinessHours import BusinessHours
from datetime import datetime
holidaytextfile = 'holidays.txt'
testing = BusinessHours(datetime(2013,02,01),datetime(2013,02,28),worktiming=[9 ,18],weekends=[6,7],holidayfile=holidaytextfile)
print testing.getdays()
我的假期文件包含以下内容(只是 2 月的一个随机工作日)
07-02-2013
当我运行脚本时,出现以下错误。
Traceback (most recent call last):
File "business_days", line 9, in ?
print testing.getdays()
File "/usr/lib/python2.4/site-packages/BusinessHours.py", line 63, in getdays
holidate = date(int(year) , int(month) , int(day))
NameError: global name 'date' is not defined
这是包中的代码部分。
60 for definedholiday in definedholidays:
61 flag=0;
62 day , month , year = definedholiday.split('-')
63 holidate = date(int(year) , int(month) , int(day))
64 for weekend in self.weekends:
65 #check if mentioned holiday lies in defined weekend , shouldnt deduct twice
66 if(holidate.isoweekday==weekend):
67 flag=1;
68 break;
感谢任何人给我的任何帮助,我的 Python 版本是 2.4.3