2012-06-11 2 views
9

그래서 다른 함수에 대한 날짜 인수가있는 스크립트가 있으며 01-01-2012 ~ 06-09-2012 주말을 포함하여 루프를 반복합니다. 그래서 각 날짜 통해주말을 제외하고 일정 반복 루프

items = (functions.getItems(item,date) 
    print items 
    test = sum(abs(l[-1]) for l in items) 
    total = open('total' +str(datetime.today- datetime.timedelta(1)),'a') 

내가 timedelta (1)주기를 원하는 : 임 내 스크립트가 예를 들어 파일 이름에 사용 된 날짜가 파일을 출력하기 때문에 시간 델타를 사용할 수있는 방법을 알아 내려고 출력 파일은 첫날에 total2012-01-01의 형식을 가지며 total2012-06-09 파일을 생성 할 때까지 순환합니다. 또한 항목에 대한 날짜 인수는 내가이 작업을 수행 할 수 있다고 생각 MM-DD-YYYY

의 형식은 :

sd = 01-01-2012 
ed = 06-09-2012 
delta = datetime.timedelta(days=1) 
diff = 0 
while sd != ed 
    # do functions 
    # (have output files (datetime.today - datetime.delta(diff)) 
    diff +=1 
    sd+=delta 

을 그래서 기본적으로 난 그냥 알아 내기 위해 노력하고있어 어떻게 할 수있는 기능이 시작 가진 통해 I 루프 주말을 제외한 01-01-2012이고 끝은 06-10-2012입니다. 나는 어떻게 적절한 순서로 루프에 도착하는

감사

+3

가에서 날짜를 사용하지 않도록하십시오 사용할 수 있습니다 이러한 값이 나타날 때 작업을 건너 뛸 경우에 따라서, 당신은 weekdends를 건너 형식은 MM-DD-YYYY입니다. 요소가 증가하거나 감소하는 순서가 아니기 때문에 매우 혼란 스럽습니다. 또한 ISO 표준 YYYY-MM-DD 이후 두 번째로 가장 적합한 날짜 형식 인 DD-MM-YYYY와 쉽게 섞을 수 있습니다. – Celada

+0

나는 @Celada에 동의하며 가능한 경우 ISO 형식을 사용합니다. 이것이 가능하지 않다면, 혼란을 줄이기 위해 구분 기호로'-' 대신'/'을 사용하십시오. –

답변

12

datetime.weekday() 방법을 사용하여 주말을 제외하는 방법을 알아내는 데 문제가하고 있어요. 평일과 관련된 0에서 6 사이의 값을 반환합니다. 토요일 값은 5이고 일요일 값은 6입니다. brandizzi의 대답은 더 구문 미적 @

start = datetime(2012, 1, 1) 
end = datetime(2012, 10, 6) 
delta = timedelta(days=1) 
d = start 
diff = 0 
weekend = set([5, 6]) 
while d <= end: 
    if d.weekday() not in weekend: 
     diff += 1 
    d += delta 
+0

그것의 오류가이 오류를 준다 'TypeError :'모듈 '객체가 호출 가능하지 않다' –

+2

@PriyanRockZ 당신은 아마'import datetime '으로 그것을 임포트했다. 대신'from datetime import datetime'을 사용해보십시오. – brandizzi

+0

고맙다 친애하는 친구 brandizzi.its 해결 :-) –

1

하지만 대안으로 다음과 같은

start = datetime(2012, 1, 1) 
end = datetime(2012, 10, 6) 
delta = timedelta(days=1) 
d = start 
diff = 0 
SATURDAY = 5 
while d <= end: 
    if d.weekday() < SATURDAY: 
     diff += 1 
     d += delta