ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 시간 함수 datetime
    Computer Language/Python 2020. 11. 29. 01:32
    728x90

    Python에서 시간관련해서 굉장히 많이 쓰이는 함수입니다.

    보통 성능측정할때는 그냥 time()을 쓰기도 하는데 실제 user data나 날짜 비교 등 날짜관련 조작을 위해서는 datetime이 자주 사용됩니다.

    개인적으로 자주쓰지만 햇갈리는것들을 정리해봅니다

    1. 문자열을 datetime으로 변환

    import datetime
    
    str_date = "2020-11-29 13:54:22"
    trans_date = datetime.datetime.strptime(str_date, '%Y-%m-%D %H:%M:%S')
    type(trans_date)
    print(trans_date)
    <class 'datetime.datetime'>
    2020-11-29 13:54:22

    만약 시간:분 이런 문자열이라도 format만 맞춰주면 입력 가능합니다.

    import datetime
    
    str_date = "13:54"
    trans_date = datetime.datetime.strptime(str_date, '%H:%M')
    print(trans_date)

    결과를 보면 시간, 분은 맞는다 다른값은 초기값으로 지정됩니다.

    1900-01-01 13:54:00

    2. 시간 비교 및 연산
    datetime type 간의 연산 중 가장 많이 쓰이는게 차이값 구하기일 것입니다.
    시작날짜와 종료날짜간의 차이를 구해서 결과를 day 혹은 시,분,초 이런식으로 얻고자 하는 경우가 많습니다.

    이런 경우, 아래와 같이 계산하면 됩니다.

    import datetime
    
    start = '03:00'
    end = '03:30'
    
    stime = datetime.datetime.strptime(start, '%H:%M')
    etime = datetime.datetime.strptime(end, '%H:%M')
    
    if etime < stime: 
        etime = etime + datetime.timedelta(days=1)
    
    print(stime)
    print(etime)
    
    interval = etime-stime
    
    length=int(interval.seconds/60)
    print(length)
    1900-01-01 03:00:00
    1900-01-01 03:30:00
    30

    interval에서 지원하는 attribute는 아래와 같습니다.

    print(interval) 
    print(interval.days) # 일별
    print(interval.seconds) # 초
    print(interval.seconds/60) # 분
    print(interval.seconds/3600) # 시

    3.# dateime 형에서 날짜 증감
    datetime에서 날짜를 생성 후 하루 뒤, 두시간 뒤, 이렇게 조작하고 싶을때 사용합니다.

    import datetime
    
    str_date = '03:00'
    date = datetime.datetime.strptime(str_date, '%H:%M')
    print(date)
    date = date + datetime.timedelta(days=1)
    print(date)
    1900-01-01 03:00:00
    1900-01-02 03:00:00

    datetime.timedelta() 함수에 key=value 형식으로 입력하는데 key 유형은 정해져 있습니다.
    python document page 정의를 참고해서 사용하면 됩니다.

    timedelta객체는 두 날짜나 시간의 차이인 기간을 나타냅니다.classdatetime.timedelta(days=0,seconds=0,microseconds=0,milliseconds=0,minutes=0,hours=0,weeks=0)

    모든 인자는 선택적이며 기본값은0입니다. 인자는 정수나 부동 소수점 수일 수 있으며, 양수나 음수일 수 있습니다.

    days,seconds및microseconds만 내부적으로 저장됩니다. 인자는 이 단위로 변환됩니다:

    • 밀리 초는 1000마이크로초로 변환됩니다.
    • 분은 60초로 변환됩니다.
    • 시간은 3600초로 변환됩니다.
    • 주는 7일로 변환됩니다.

    'Computer Language > Python' 카테고리의 다른 글

    reduce 활용법  (0) 2020.12.02
    map 활용법 (숫자 list를 문자열로 변환)  (0) 2020.12.02
    함수의 가변인자 *(Asterisk)의 의미  (0) 2020.11.28

    댓글

Designed by black7375.