2013-02-13 3 views
0

장고 날짜 필드에 업무 일수를 추가하려고합니다. 이는 제품 별 리드 타임이 다른 제품 주문을위한 것이며 각 제품에 대한 목표 날짜를 생성하려고합니다.날짜 필드에 업무 일 추가

예를 들어, 제품 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

+0

실감보다 큰 문제가있을 수 있습니다. 영업일은 주말에 따라 다르며 (항상 2 일이 아닌 경우도 있음) 국적 및 종교적 휴일 (또한 다를 수도 있음)을 고려해야합니다. 국제 업무를 수행하는 경우 배송 종료일의 주말/공휴일, 운송중인 주말/공휴일 (예 : 세관 및 해운 회사), 마지막으로 수신 종료일의 주말/공휴일과 같이 더 복잡한 업무가 수행됩니다. –

+0

안녕하세요 피터, 다행히도 이것은 해외 시장에 노출 될 소규모 프로젝트이므로 현지 날짜와 공휴일에만 작업하게 될 것입니다. 단순함을 위해, 공휴일이 블록에있을 경우 리드 타임에 여분의 하루 또는 두 개의 버퍼를 추가 할 수 있습니다. – dlyxzen

답변

0

당신이이 질문을 체크 아웃 적이있다? 나는 그것이 몇 줄의 코드로 당신의 대답에 도움이 될 것이라고 믿는다.

python-count-days-ignoring-weekends

+0

안녕하세요 람세스, 그 링크 덕분에, 내가 검색 할 때 그 질문을 찾지 못했습니다. 나는 생각한다. 내가 원했던 것을 가지고 있을지도 모른다고 생각한다. 비록 내가 매우 까다 롭다 고 생각하고, 훨씬 더 멋지게 다시 쓰여질 수는 있지만, 나는 여전히 파이썬에 대한 약간의 멍청하다. 이것은 내가 생각해 낸 것입니다 (질문에 업데이트되었습니다). 아마 당신은 그것을하는 더 나은 방법을 권할 것입니까? – dlyxzen

+0

글쎄, 내 예제 중 하나에서 작동하지만 그들 중 일부는 작동하지 않는 것 같습니다, 그래서 아마 어딘가에 뭔가 잘못하고 있습니다. – dlyxzen

+0

플러스 나는 공휴일로이 공휴일에서 어떻게 일할 수 있는지 잘 모르겠습니다. \ – dlyxzen