타임 델타를 일, 시간 및 분으로 변환
타임 델타가 있습니다. 나는 튜플이나 사전으로 그 일, 시간 및 분을 원합니다 ... 나는 소란스럽지 않습니다.
나는 수십 년 동안 수십 개의 언어로 이것을 수십 번 했음에도 불구하고 파이썬은 일반적으로 모든 것에 대한 간단한 대답을 가지고 있으므로 메마른 간단한 수학을 파헤 치기 전에 여기에 물었다 고 생각했습니다.
Fooz는 좋은 지적을합니다.
나는 각각의 기간이있는 "목록"(이베이 목록과 약간 비슷 함)을 다루고 있습니다. 나는함으로써 남은 시간을 찾으려고 노력하고있다.when_added + duration - now
DST를 설명하지 않는다고 말하는 것이 옳습니까? 그렇지 않은 경우 한 시간을 더하거나 빼는 가장 간단한 방법은 무엇입니까?
당신이있는 경우 datetime.timedelta
값을 td
, td.days
이미 "일"당신이 원하는 당신을 제공합니다. timedelta
값은 하루의 소수를 초 (직접시 또는 분이 아닌)로 유지하므로 실제로 "유쾌한 수학"을 수행해야합니다. 예 :
def days_hours_minutes(td):
return td.days, td.seconds//3600, (td.seconds//60)%60
이것은 조금 더 작습니다. 두 줄로 시간, 분 및 초를 얻습니다.
days = td.days
hours, remainder = divmod(td.seconds, 3600)
minutes, seconds = divmod(remainder, 60)
# If you want to take into account fractions of a second
seconds += td.microseconds / 1e6
days, hours, minutes = td.days, td.seconds // 3600, td.seconds // 60 % 60
DST의 경우 가장 좋은 방법은 두 datetime
객체를 초로 변환하는 것입니다 . 이렇게하면 시스템이 DST를 계산합니다.
>>> m13 = datetime(2010, 3, 13, 8, 0, 0) # 2010 March 13 8:00 AM
>>> m14 = datetime(2010, 3, 14, 8, 0, 0) # DST starts on this day, in my time zone
>>> mktime(m14.timetuple()) - mktime(m13.timetuple()) # difference in seconds
82800.0
>>> _/3600 # convert to hours
23.0
이해가 안 돼요
days, hours, minutes = td.days, td.seconds // 3600, td.seconds // 60 % 60
이건 어때요
days, hours, minutes = td.days, td.seconds // 3600, td.seconds % 3600 / 60.0
플로트로 분과 초를 얻습니다.
timedeltas에는 days
및 seconds
속성이 있습니다. 쉽게 직접 변환 할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/2119472/convert-a-timedelta-to-days-hours-and-minutes
'IT story' 카테고리의 다른 글
왜 emplace_back 대신 push_back을 사용합니까? (0) | 2020.05.01 |
---|---|
문자열이 비어 있는지 확인 (0) | 2020.05.01 |
팬더 색인 열 제목 또는 이름 (0) | 2020.05.01 |
PowerShell을 사용하여 디렉토리의 파일을 반복 (0) | 2020.05.01 |
언어는 어떻게 확장됩니까? (0) | 2020.05.01 |