ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] Datetime 시간 객체 활용하기(문자열 변환, 증감, 대소비교)
    Programming 2021. 3. 24. 00:19

    파이썬으로 프로그래밍을 하면 프로그래머스 류의 코딩테스트에서 종종 시간 관련 문제를 만날 수 있다.

    시간을 처리하는 메소드를 직접 구현하기 보다는 Python의 Datetime 모듈을 활용하는 것이 더 효율적일 때가 많아서 정리해보려고 한다.

     

    1. datetime 모듈의 datetime 클래스 포함하기

    import datetime
    
    #ex)
    datetime.datetime.today()
    # >> datetime.datetime(2021, 3, 23, 22, 50, 49, 881617)

    현재 날짜와 시간을 구할 때는 today 메소드를 사용한다. UTC 기준으로 구하는 방법도 있지만 설명은 생략한다.

     

    2. 특정 날짜와 시간으로 객체 만들기

    datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0)
    
    d = datetime.datetime(2021, 3, 23)

    datetime의 매개변수로 원하는 시간을 넣어 datetime 객체를 만들 수도 있다.

     

    3. 문자열로 날짜/시간 객체 만들기

    datetime.datetime.strptime('날짜문자열', '포맷')
    
    #ex)
    d = datetime.datetime.strptime('2021-03-23', '%Y-%m-%d')
    d2 = datetime.datetime.strptime('02:24:48', '%H:%M:%S')

    strptime메소드를 사용하면 문자열 형태의 날짜를 datetime.datetime 객체로 변환할 수 있다. 이 때, 아래의 표를 이용해서 날짜/시간 포맷을 지정해줘야 한다(자주 쓸만한 것만 넣었다).

    코드 설명
    %A 요일 Sunday, Monday, ... , Saturday
    %d 01, 02, ... , 31
    %B January, February, ... , December
    %m 숫자 월 01, 02, ... , 12
    %Y 네 자릿수 연도 0001, 0002, ... , 9999
    %H 시간(24시) 00, 01, ... , 23
    %M 00, 01, ... , 59
    %S 00, 01, ... , 59
    %j 1월 1일부터 경과한 일수 001, 002, ... , 366
    %U 1년 중 주차, 월요일이 한 주의 시작 00, 01, ... , 53
    %x 날짜 출력, 현재 시간대 기준 24/03/21
    %X 시간 출력, 현재 시간대 기준 02:24:48

     

    4. 날짜/시간 객체를 문자열로 만들기

    datetime객체.strftime('포맷')
    
    # ex)
    d.strftime('%Y-%m-%d')
    # >> '2021-03-24'
    d.strftime('%X')
    # >> '00:04:24'

     

    5. 날짜와 시간 속성에 접근하기

    today = datetime.today()
    today.year, today.month, today.day, today.hour, today.minute, today.second, today.microsecond

    연, 월, 일, 시, 분, 초, 마이크로 초 속성을 따로 가져올 수 있다.

     

    6. 날짜와 시간 차이 계산하기

    datetime.timedelta 를 이용해서 시간의 차이를 계산해낼 수 있다. 주로 두 datetime 객체의 날짜/시간 차이를 계산하거나 증감할 때 사용한다.

    datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
    
    # ex)
    from datetime import timedelta
    d = datetime.datetime.strptime('09:09', '%H:%M')
    d - timedelta(minutes=40)
    # datetime.datetime(1900, 01, 01, 0, 8, 29)

    위와 같이 datetime 객체에서 날짜/시간을 증감시킬 수 있고

    datetime(2018, 5, 13) - datetime(2018, 4, 1)
    # datetime.timedelta(42)

    두 datetime 객체에서도 시간의 차이를 도출해낼 수 있다.

     

    7. datetime 객체 대소비교하기

    d1 = datetime.datetime.strptime('09:40', '%H:%M')
    d2 = datetime.datetime.strptime('15:09', '%H:%M')
    
    print(d1<=d2)
    # True

    단순히 >, <, == 연산자를 이용해서 두 datetime 객체의 대소를 비교할 수 있다.

     

    8. datetime 객체 리스트 정렬하기

    dList = []		#datetime 객체가 들어있다고 가정
    dList = dList.sorted()

    리스트를 정렬하는 것과 똑같이 sort를 해주면 오름차순으로 정렬된 datetime 객체 리스트를 얻을 수 있다.

     

    출처: https://www.dogdrip.net/dvs/d/20/07/31/818e5cbae66cd176aac019c43ac10edc.png

     

    ***출처: dojang.io/mod/page/view.php?id=2463 ***

Designed by Tistory.