2013-05-01 4 views
2

날짜를 허용하고 현재 시간 (초)과의 차이를 반환하는 함수가 있습니다. 그것은 하루도 안되는 모든 일에 잘 작동합니다. 하지만 앞으로 1 년 후의 날짜를 입력해도 여전히 84,000 초 (하루에 약 86,400 초)의 숫자가 반환됩니다.두 날짜 사이의 초 차이를 하루 이상으로 계산하지 않음

def calc_time(date): 
    future_date = str(date) 
    t_now = str(datetime.utcnow()) 
    t1 = datetime.strptime(t_now, "%Y-%m-%d %H:%M:%S.%f") 
    t2 = datetime.strptime(future_date, "%Y-%m-%d %H:%M:%S.%f") 
    return ((t2-t1).seconds) 

날짜가 2014 인 매개 변수로 실행할 때도 숫자가 너무 적습니다.

누구나 통찰력을 갖고 있습니까?

+2

잘못된 결과를 생성하는 예제 매개 변수를 포함 할 수 있습니까? –

+0

확실한 것. 예제 매개 변수 = datetime (2013, 6, 3, 8, 38, 30, 1) – jumpReturn

답변

0

아 유용한 경우 초

$secondsremaining = strtotime($yourdate) - strtotime($currentdate); 

upvote에를 사용에서의 차이를 얻을 사이의 일 수. 분명히 .seconds는 하루의 범위 내에서 초 차이 만 반환합니다.

.seconds에는시와 분이 모두 포함되므로 총 초를 얻으려면 .days * 86400에 추가해야합니다.

도움을 주신 모든 분들께 감사드립니다. ; D

5

datetime.timedelta 문서를 읽는 중입니다.

인수는 모두 선택 사항이며 기본값은 0입니다. 인수는 int, long 또는 부동 소수점 수 있으며 양수 또는 음수 일 수 있습니다.

일, 초 및 마이크로 초만 내부적으로 저장됩니다. 인수 은 다음 단위로 변환됩니다.

밀리 초는 1000 마이크로 초로 변환됩니다. 1 분은 으로 60 초로 변환됩니다. 한 시간은 3600 초로 변환됩니다. 주일은 이며 7 일로 변환됩니다. 및 일 초, 마이크로 초

0 < = 마이크로 <으로 다음의 표현이 고유되도록 정규화 1,000,000 0 < = 초 < 3600 * 24 (하루에 초) -999999999 < = 일 < =이 솔루션

999999999는 .total_seconds() 대신 다음 코드가 반환됩니다 .seconds

0

으로 사용하는 것입니다 당신에게 주어진 두 날짜

$daysremaining = ceil(abs(strtotime($yourdate) - strtotime($currentdate))/86400); 

관련 문제