Programing

두 날짜 사이의 일?

lottogame 2020. 7. 18. 10:30
반응형

두 날짜 사이의 일? [복제]


이 질문에는 이미 답변이 있습니다.

두 날짜 사이에 하루가 몇 일이 지 났는지 확인하는 가장 짧은 방법은 무엇입니까? 여기 내가 지금하고있는 일이 있습니다.

math.floor((b - a).total_seconds()/float(86400))

문자 그대로 두 개의 날짜 개체가 있다고 가정하면 하나에서 다른 날짜 개체를 빼고 결과 timedelta개체 를 며칠 동안 쿼리 할 수 ​​있습니다 .

>>> from datetime import date
>>> a = date(2011,11,24)
>>> b = date(2011,11,17)
>>> a-b
datetime.timedelta(7)
>>> (a-b).days
7

그리고 datetimes에서도 작동합니다. 가장 가까운 날로 반올림한다고 생각합니다.

>>> from datetime import datetime
>>> a = datetime(2011,11,24,0,0,0)
>>> b = datetime(2011,11,17,23,59,59)
>>> a-b
datetime.timedelta(6, 1)
>>> (a-b).days
6

전체 달력 일 또는 24 시간 그룹을 의미합니까?

Python의 datetime을 사용한다고 가정하면 timedelta 객체에는 이미 days 속성이 있습니다.

days = (a - b).days

달력 일의 경우 가장 가까운 날로 반올림하고 b를 가장 가까운 날로 반올림하여 양쪽의 일부 날을 제거해야합니다.

roundedA = a.replace(hour = 0, minute = 0, second = 0, microsecond = 0)
roundedB = b.replace(hour = 0, minute = 0, second = 0, microsecond = 0)
days = (roundedA - roundedB).days

시험:

(b-a).days

나는 b와 a 타입으로 시도했다 datetime.date.


다른 답변에 대한 내 의견 참조. 이것이 24 시간과 달력 일을 기준으로 일의 차이를 해결하는 방법입니다. days 속성은 24 시간 동안 잘 작동하며이 기능은 달력 확인에 가장 적합합니다.

from datetime import timedelta, datetime

def cal_days_diff(a,b):

    A = a.replace(hour = 0, minute = 0, second = 0, microsecond = 0)
    B = b.replace(hour = 0, minute = 0, second = 0, microsecond = 0)
    return (A - B).days

if __name__ == '__main__':

    x = datetime(2013, 06, 18, 16, 00)
    y = datetime(2013, 06, 19, 2, 00)

    print (y - x).days          # 0
    print cal_days_diff(y, x)   # 1 

    z = datetime(2013, 06, 20, 2, 00)

    print (z - x).days          # 1
    print cal_days_diff(z, x)   # 2 

참고 URL : https://stackoverflow.com/questions/8258432/days-between-two-dates

반응형