답변:
알려진 두 날짜 간의 차이를 계산하려면 다음 total_seconds
과 같이 사용 하십시오.
import datetime as dt
a = dt.datetime(2013,12,30,23,59,59)
b = dt.datetime(2013,12,31,23,59,59)
(b-a).total_seconds()
86400.0
#note that seconds doesn't give you what you want:
(b-a).seconds
0
(b-a).microseconds
(1000) 초 (1000000) 또는 밀리 초를 얻을 수 있음을 나누어 다음과
-60
:from datetime import datetime; (datetime(2019, 1, 1, 0, 0) - datetime(2019, 1, 1, 0, 1)).total_seconds()
import time
current = time.time()
...job...
end = time.time()
diff = end - current
그게 당신을 위해 일할 것입니까?
>>> from datetime import datetime
>>> a = datetime.now()
# wait a bit
>>> b = datetime.now()
>>> d = b - a # yields a timedelta object
>>> d.seconds
7
(7은 조금 이상 기다린 시간이 될 것입니다)
datetime.datetime이 상당히 유용하다는 것을 알았습니다. 복잡하거나 어색한 시나리오가 있으면 알려주십시오.
편집 : @WoLpH 덕분에 날짜 시간이 서로 가깝도록 항상 자주 새로 고치려고하는 것은 아닙니다. 델타의 요일을 고려하여 더 긴 시간 소인 불일치를 처리 할 수 있습니다.
>>> a = datetime(2010, 12, 5)
>>> b = datetime(2010, 12, 7)
>>> d = b - a
>>> d.seconds
0
>>> d.days
2
>>> d.seconds + d.days * 86400
172800
d.seconds + d.days * 86400
대신 돌아 오면 , 그것은 며칠 동안 맞습니다;)
a - b
, where a
is before b
(즉, 결과가 부정적 임) : (a - b).seconds == 86282
while을 고려하십시오 a - b == datetime.timedelta(-1, 86276, 627665)
. 올바른 방법은 사용하는 것입니다 timedelta.total_seconds()
... 그러나 그것은 py2.7 + 만입니다.
timedelta.total_seconds()
입니다. 이에 따라 공감.
total_seconds()
2.7+ 기능입니다.
파이썬 2.7에서 total_seconds () 함수가 있습니다. 파이썬 2.6의 코드는 아래를 참조하십시오.
import datetime
import time
def diffdates(d1, d2):
#Date format: %Y-%m-%d %H:%M:%S
return (time.mktime(time.strptime(d2,"%Y-%m-%d %H:%M:%S")) -
time.mktime(time.strptime(d1, "%Y-%m-%d %H:%M:%S")))
d1 = datetime.now()
d2 = datetime.now() + timedelta(days=1)
diff = diffdates(d1, d2)
나를 위해 일하고있는 것이 있습니다.
from datetime import datetime
date_format = "%H:%M:%S"
# You could also pass datetime.time object in this part and convert it to string.
time_start = str('09:00:00')
time_end = str('18:00:00')
# Then get the difference here.
diff = datetime.strptime(time_end, date_format) - datetime.strptime(time_start, date_format)
# Get the time in hours i.e. 9.60, 8.5
result = diff.seconds / 3600;
도움이 되었기를 바랍니다!