장고 날짜 필드에 업무 일수를 추가하려고합니다. 이는 제품 별 리드 타임이 다른 제품 주문을위한 것이며 각 제품에 대한 목표 날짜를 생성하려고합니다.날짜 필드에 업무 일 추가
예를 들어, 제품 X가 배송까지 영업일 기준 10 일이 소요될 수 있습니다.이 제품이 2013 년 1 월 3 일 금요일 날에 주문되면 대상 날짜는 2013 년 3 월 15 일 금요일이어야합니다 (주문일 제외). 하루로).
나는 주위를 둘러 보았고,이 다소간의 일을하는 파이썬 라이브러리가있는 것처럼 보이지만, 모두 지나치게 복잡해 보였다. 나는 이것을 할 수있는 아주 간단한 방법이있을 것이라고 생각했다.
** 편집 **
내가 지금 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;
내가 어떤 지원 사람을 주셔서 감사합니다 줘, 내 파이썬 버전은 2.4.3
실감보다 큰 문제가있을 수 있습니다. 영업일은 주말에 따라 다르며 (항상 2 일이 아닌 경우도 있음) 국적 및 종교적 휴일 (또한 다를 수도 있음)을 고려해야합니다. 국제 업무를 수행하는 경우 배송 종료일의 주말/공휴일, 운송중인 주말/공휴일 (예 : 세관 및 해운 회사), 마지막으로 수신 종료일의 주말/공휴일과 같이 더 복잡한 업무가 수행됩니다. –
안녕하세요 피터, 다행히도 이것은 해외 시장에 노출 될 소규모 프로젝트이므로 현지 날짜와 공휴일에만 작업하게 될 것입니다. 단순함을 위해, 공휴일이 블록에있을 경우 리드 타임에 여분의 하루 또는 두 개의 버퍼를 추가 할 수 있습니다. – dlyxzen