timedelta 이해
아래의 파이썬 코드가 주어지면 거기에서 일어나는 일을 이해하도록 도와주세요.
start_time = time.time()
time.sleep(42)
end_time = time.time()
uptime = end_time - start_time
human_uptime = str(datetime.timedelta(seconds=int(uptime)))
그래서 start time
와 사이의 차이를 얻 end time
습니다. 5 행에서 캐스팅을 통해 기간을 반올림하고 이제 더 자세한 설명은 무엇입니까?
델타가 의미하는 것이 무엇인지 (평균 또는 차이) 알고 있지만, 왜 전달 seconds = uptime
해야 timedelta
하고 왜 문자열 캐스팅이 그렇게 잘 작동하여 얻을 수 HH:MM:SS
있습니까?
timedelta는 다음과 같이 정의되기 때문입니다.
class datetime.timedelta([days,] [seconds,] [microseconds,] [milliseconds,] [minutes,] [hours,] [weeks])
모든 인수는 선택 사항이며 기본값은 0입니다.
옵션 인수를 사용하여 "3 일 4 밀리 초"라고 쉽게 말할 수 있습니다.
>>> datetime.timedelta(days=3, milliseconds=4)
datetime.timedelta(3, 0, 4000)
>>> datetime.timedelta(3, 0, 0, 4) #no need for that.
datetime.timedelta(3, 0, 4000)
그리고 str 캐스팅의 경우 __repr__
가독성을 높이기 위해 대신 형식화 된 멋진 값을 반환합니다 . 문서에서 :
str (t) [D day [s],] [H] H : MM : SS [.UUUUUU] 형식의 문자열을 반환합니다. 여기서 D는 음수 t에 대해 음수입니다. (5)
>>> datetime.timedelta(seconds = 42).__repr__()
'datetime.timedelta(0, 42)'
>>> datetime.timedelta(seconds = 42).__str__()
'0:00:42'
체크 아웃 문서 :
http://docs.python.org/library/datetime.html#timedelta-objects
초를 전달해야하는 이유 = timedelta에 대한 가동 시간
timedelta 객체는 초, 밀리 초, 일 등을 전달할 수 있으므로 전달할 내용을 지정해야합니다 (이것이 명시 적 키를 사용하는 이유입니다). 형변환 int
은 부동 수도 허용 할 수 있으므로 불필요합니다.
그리고 왜 문자열 캐스팅이 그렇게 잘 작동하여 HH : MM : SS를 얻습니까?
형식을 지정하는 것은 형식 변환이 __str__
아니라 개체 의 내부 방법입니다. 실제로 다음과 같이 작성하면 동일한 결과를 얻을 수 있습니다.
print datetime.timedelta(seconds=int(uptime))
참고 URL : https://stackoverflow.com/questions/6749294/understanding-timedelta
'programing' 카테고리의 다른 글
서비스가 배치 파일을 통해 실행 중인지 확인하고 실행 중이 아닌 경우 시작하는 방법은 무엇입니까? (0) | 2020.09.20 |
---|---|
공용 REST API를 테스트하기 위해 어떤 도구를 사용합니까? (0) | 2020.09.19 |
여전히 인라인 용도가 있습니까? (0) | 2020.09.19 |
Razor보기 엔진-부분보기를 추가하는 방법 (0) | 2020.09.19 |
별표와 이중 별표로 시작하는 Python 메서드 / 함수 인수 (0) | 2020.09.19 |