[python] 타임 델타를 일, 시간 및 분으로 변환

타임 델타가 있습니다. 나는 튜플이나 사전으로 그 일, 시간 및 분을 원합니다 … 나는 소란스럽지 않습니다.

나는 수십 년 동안 수십 개의 언어로 이것을 수십 번 했음에도 불구하고 파이썬은 일반적으로 모든 것에 대한 간단한 대답을 가지고 있기 때문에 메마른 간단한 수학을 파헤 치기 전에 여기에 물었다 고 생각했습니다.

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

플로트로 분과 초를 얻습니다.


답변

나는 다음을 사용했다.

delta = timedelta()
totalMinute, second = divmod(delta.seconds, 60)
hour, minute = divmod(totalMinute, 60)
print(f"{hour}h{minute:02}m{second:02}s")


답변

timedeltas에는 daysseconds속성이 있습니다. 쉽게 직접 변환 할 수 있습니다.


답변