두 시간 문자열 사이의 시간 간격 계산 방법
10:33:26(HH:) 형식으로 시작 시간과 종료 시간 두 가지 시간이 있습니다.MM:SS) 두 시간 사이의 차이가 필요합니다.Python에 대한 문서와 온라인 검색을 통해 날짜 및/또는 시간 모듈과 관련이 있을 것으로 생각됩니다.제대로 작동하지 않고 데이트할 때만 어떻게 해야 하는지 계속 찾고 있어요.
최종적으로 여러 시간의 평균치를 계산해야 합니다.출근 시차가 있어서 목록으로 저장하고 있어요.나는 이제 평균을 계산해야 한다.원래 시간을 해석하기 위해 정규 표현을 사용하고 그 다음 차이를 수행합니다.
평균값의 경우 초 단위로 변환한 다음 평균값으로 변환해야 합니까?
네, 여기 꼭 필요하세요.구체적으로는datetime.strptime()method:을 합니다.datetime★★★★★★ 。
from datetime import datetime
s1 = '10:33:26'
s2 = '11:15:49' # for example
FMT = '%H:%M:%S'
tdelta = datetime.strptime(s2, FMT) - datetime.strptime(s1, FMT)
★★★★★★★★★★★★★★★★★★★★.timedelta두 시간의 차이를 포함하는 객체.초 단위로 변환하거나 다른 초 단위로 추가하는 등 원하는 작업을 수행할 수 있습니다.datetime.
(예: 종료시각이 시작시각보다 빠를 경우)에는됩니다.s1 = 12:00:00 ★★★★★★★★★★★★★★★★★」s2 = 05:00:00), 코드에 할 수 .
if tdelta.days < 0:
tdelta = timedelta(
days=0,
seconds=tdelta.seconds,
microseconds=tdelta.microseconds
)
( ( ), ( )를 .from datetime import timedeltaF.J.F. 입니다.세바스찬
이것을 시험해 보세요.단기적인 이벤트의 타이밍에 효과적입니다.만약 어떤 것이 1시간 이상 걸린다면, 최종 디스플레이는 아마도 친숙한 포맷을 원할 것입니다.
import time
start = time.time()
time.sleep(10) # or do something more productive
done = time.time()
elapsed = done - start
print(elapsed)
시간 차이는 경과 초수로 반환됩니다.
여기에서는 초과)보다 차이를 수 .23:55:00-00:25:00 소요 (30분 소요):
#!/usr/bin/env python
from datetime import datetime, time as datetime_time, timedelta
def time_diff(start, end):
if isinstance(start, datetime_time): # convert to datetime
assert isinstance(end, datetime_time)
start, end = [datetime.combine(datetime.min, t) for t in [start, end]]
if start <= end: # e.g., 10:33:26-11:15:49
return end - start
else: # end < start e.g., 23:55:00-00:25:00
end += timedelta(1) # +day
assert end > start
return end - start
for time_range in ['10:33:26-11:15:49', '23:55:00-00:25:00']:
s, e = [datetime.strptime(t, '%H:%M:%S') for t in time_range.split('-')]
print(time_diff(s, e))
assert time_diff(s, e) == time_diff(s.time(), e.time())
산출량
0:42:23
0:30:00
time_diff() 오브젝트를 합니다.이를 반환한다.이시시시 ( 시시시시시시시 。mean()직접 기능합니다. §:
#!/usr/bin/env python
from datetime import timedelta
def mean(data, start=timedelta(0)):
"""Find arithmetic average."""
return sum(data, start) / len(data)
data = [timedelta(minutes=42, seconds=23), # 0:42:23
timedelta(minutes=30)] # 0:30:00
print(repr(mean(data)))
# -> datetime.timedelta(0, 2171, 500000) # days, seconds, microseconds
mean()도 「」입니다.timedelta()할 수 ('초td.total_seconds()방법(Python 2.7 이후), 시간(td / timedelta(hours=1)(Python 3)
이 사이트에는 다음과 같이 기술되어 있습니다.
import datetime as dt
start="09:35:23"
end="10:23:00"
start_dt = dt.datetime.strptime(start, '%H:%M:%S')
end_dt = dt.datetime.strptime(end, '%H:%M:%S')
diff = (end_dt - start_dt)
diff.seconds/60
이 포럼에서는 time.mktime()을 사용합니다.
Python에서 시차를 나타내는 구조를 timedelta라고 합니다.가지고 계신 경우start_time그리고.end_time~하듯이datetime차이를 계산할 수 있는 유형-연산자:
diff = end_time - start_time
이 작업은 특정 문자열 형식으로 변환하기 전에 수행해야 합니다(예를 들어 start_time.strftime(...) 이전).문자열 표현이 이미 있는 경우 strptime 메서드를 사용하여 시간/시간으로 다시 변환해야 합니다.
https://amalgjose.com/2015/02/19/python-code-for-calculating-the-difference-between-two-time-stamps이라는 사람이 하는 방식이 마음에 듭니다.단점이 있는지는 모르겠지만
하지만 저는 깔끔해 보여요:)
from datetime import datetime
from dateutil.relativedelta import relativedelta
t_a = datetime.now()
t_b = datetime.now()
def diff(t_a, t_b):
t_diff = relativedelta(t_b, t_a) # later/end time comes first!
return '{h}h {m}m {s}s'.format(h=t_diff.hours, m=t_diff.minutes, s=t_diff.seconds)
아직 사용하실 필요가 있는 질문에 대해서datetime.strptime()아까도 말했지만
이거 드셔보세요
import datetime
import time
start_time = datetime.datetime.now().time().strftime('%H:%M:%S')
time.sleep(5)
end_time = datetime.datetime.now().time().strftime('%H:%M:%S')
total_time=(datetime.datetime.strptime(end_time,'%H:%M:%S') - datetime.datetime.strptime(start_time,'%H:%M:%S'))
print total_time
출력:
0:00:05
import datetime as dt
from dateutil.relativedelta import relativedelta
start = "09:35:23"
end = "10:23:00"
start_dt = dt.datetime.strptime(start, "%H:%M:%S")
end_dt = dt.datetime.strptime(end, "%H:%M:%S")
timedelta_obj = relativedelta(start_dt, end_dt)
print(
timedelta_obj.years,
timedelta_obj.months,
timedelta_obj.days,
timedelta_obj.hours,
timedelta_obj.minutes,
timedelta_obj.seconds,
)
결과: 0 0 0 0 - 47 - 37
및 둘 다 날짜 구성 요소가 있습니다.
일반적으로 시간만 다루는 경우 기본 날짜를 제공합니다.차이점에 관심이 있고 두 시간이 같은 날이라는 것을 알고 있다면datetime각 요일을 오늘로 설정하고 정지 시간에서 시작을 빼서 간격을 구합니다(timedelta).
datetime 모듈과 timedelta 개체를 확인합니다.시작 시간과 중지 시간에 대한 datetime 개체를 생성해야 하며, 이를 빼면 timedelta가 생성됩니다.
진자를 사용할 수 있습니다.
import pendulum
t1 = pendulum.parse("10:33:26")
t2 = pendulum.parse("10:43:36")
period = t2 - t1
print(period.seconds)
출력:
610
import datetime
day = int(input("day[1,2,3,..31]: "))
month = int(input("Month[1,2,3,...12]: "))
year = int(input("year[0~2020]: "))
start_date = datetime.date(year, month, day)
day = int(input("day[1,2,3,..31]: "))
month = int(input("Month[1,2,3,...12]: "))
year = int(input("year[0~2020]: "))
end_date = datetime.date(year, month, day)
time_difference = end_date - start_date
age = time_difference.days
print("Total days: " + str(age))
24시간 미만의 경과 시간에 관심이 있는 경우 간결합니다.return 스테이트먼트에서 필요에 따라 출력 형식을 지정할 수 있습니다.
import datetime
def elapsed_interval(start,end):
elapsed = end - start
min,secs=divmod(elapsed.days * 86400 + elapsed.seconds, 60)
hour, minutes = divmod(min, 60)
return '%.2d:%.2d:%.2d' % (hour,minutes,secs)
if __name__ == '__main__':
time_start=datetime.datetime.now()
""" do your process """
time_end=datetime.datetime.now()
total_time=elapsed_interval(time_start,time_end)
보통 처리해야 할 사건이 여러 개 있고, 아마 한 번에 처리할 수 있습니다.pd.DataFrame(data)포맷합니다.그 후, 다음과 같이 입력합니다.
import pandas as pd
df['duration'] = pd.to_datetime(df['stop time']) - pd.to_datetime(df['start time'])
는 수동 변환 없이 시차를 제공합니다.
DataFrame 열 유형을 문자열에서 날짜/시간으로 변환에서 가져옵니다.
만약 당신이 게으르고 판다의 부담에 개의치 않는다면, 당신은 단 한 번의 출품작으로도 이것을 할 수 있다.
문자열에 일수도 포함되어 있는 경우의 코드는 다음과 같습니다.[ - 1 day 32 : 43 : 02 ]
print(
(int(time.replace('-', '').split(' ')[0]) * 24) * 60
+ (int(time.split(' ')[-1].split(':')[0]) * 60)
+ int(time.split(' ')[-1].split(':')[1])
)
언급URL : https://stackoverflow.com/questions/3096953/how-to-calculate-the-time-interval-between-two-time-strings
'programing' 카테고리의 다른 글
| Java 8에서 비교기 반전 (0) | 2022.10.21 |
|---|---|
| MYSQL에서 SQL을 사용하여 두 날짜 시간 값에서 빼서 몇 분 또는 몇 초 안에 결과를 가져오려면 어떻게 해야 합니까? (0) | 2022.10.21 |
| MySQL은 각 행에 고유한 하나의 쿼리 조건에서 여러 행을 삭제합니다. (0) | 2022.10.21 |
| Laravel Storage 폴더에 대한 경로는 어떻게 얻습니까? (0) | 2022.10.21 |
| Google Maps VueJS 컴포넌트(vue2-google-maps)를 Larabel 블레이드 뷰에 통합 (0) | 2022.10.21 |