2014-01-23 10 views
0

사용자가 absences을 datetime 범위로 구성 할 수 있도록 양식을 만들었습니다. Django - 날짜/시간 범위 종료 시간 제외

datetime range editor

나는 시간이 옵션 왼쪽, 그래서 그들은 2014-01-24

에 예를 2014-01-23에 대해 설정할 수 그러나 최종 저장된 값이 2014-01-23 00:00:002014-01-24 00:00:00로되기 때문에,이 범위는 실제로에만 23 일을 다룰 것입니다. 대부분 사용자는 대신 끝에 2014-01-25 00:00:00을 고려하기를 원할 것입니다.

이런 식으로 시간을 저장하는 것이 좋은 방법입니까?

종료 시간을 설정하지 않으면 자동으로 종료 날짜를 증가시켜야합니까?


업데이트

는 @MartijnPieters 조언에 따라, 여기 end_time 비어 어떠했는지 내가 확인하는 방법입니다

def clean_end_time(self): 
    end_dt = self.cleaned_data.get('end_time', None) 
    if end_dt.time().min == end_dt.time(): 
     return datetime.combine(end_dt, end_dt.time().max) 
    return self.cleaned_data.get('end_time', None) 

사용자가로 00:00을 선택할 수있는 유일한 작은 문제가 될 것입니다 end_time 목적대로

답변

3

종료 시간을 012로 설정하십시오. 대신 시간이 설정되지 않은 경우.

이제 날짜 범위는 2014-01-24 23:59:59.999999까지 2014-01-23 00:00:00에서 간다, (범위의 하지 일부) 2014-01-25 전에 1 마이크로.

귀하는이 값을 제공하기 위해 datetime.time.max를 사용할 수 있습니다이 더 나은 실제로 것

end = datetime.datetime.combine(datetime.date(2014, 1, 24), datetime.time.max) 
+0

. 나는 그것을 시도 할 것이다. –

+0

시간이 설정되지 않았는지 어떻게 확인할 수 있습니까? –

+0

@PierredeLESPINAY : 기본값을 채우는 대신 값을 완전히 비워 두거나 * 또는 * 기본 시간 인 '23 : 59'을 설정하십시오. –