파이썬 - 시간 라이브러리 (datetime) 정리



     


    Python - 시간 라이브러리 (datetime) 


    1. 라이브러리 

    from datetime import datetime 

    import datetime 으로하면, 메서드를 사용할때 

    datetime.datetime.now() 이렇게 써야하는 불편함이 있기에, from datetime 모부터 쓸것 



    2. 함수 / 메서드 종류 

    a = datetime.now()

    a = datetime.today() 이렇게 선언했다고 했을때 아래 메서드를 이렇게 표현할 수 있다. 


    메서드명출력 예시설명
    a.now() a.today()2024-02-28 08:57:41.221849현재 날짜와 시간을 출력 * 여러값이 같이 출력되므로 함수() 형식
    a.year2024현재 연도를 출력
    a.month2현재 월을 출력
    a.day28현재 일을 출력
    a.weekday()2요일을 출력 (0이 월요일)
    a.isoweekday()3ISO 규격에 따른 요일을 출력 (1이 월요일)
    a.date()2024-02-28날짜를 출력 *함수()
    a.time()08:57:41.221849시간을 출력 *함수()
    a.hour8현재 시간의 시를 출력
    a.minute57현재 시간의 분을 출력
    a.second41현재 시간의 초를 출력

    3. now()와 today() 차이점

    datetime.now(), datetime.today() 둘다 정말 똑.같.은 값을 리턴한다. 

    하나의 차이점은 now()는 매개변수로 국가별 타임시간대를 출력할 수 있다는 것이다. 

    기본값은 today와 동일하게 현재 있는 지역의 시간대, 날짜를 리턴함


    * datetime 모듈의 메서드 및 함수 주의할 점 

    1) 괄호 

    여러 함수, 메서드들이 있다. 이 중에서 어떤것이 괄호를 입력하는 건지 헷갈렸다. 

    now(), today(), date(), time(), weekday(), isoweekday() 중에서 주말을 표현하는 마지막 2개를 제외하고 나머지는 년월일, 시분초처럼 여러값을 한번에 출력하는 함수이다. 

    여러값을 뽑을땐 괄호를 붙이고, 년 / 월 / 일 / 시 / 분 / 초 처럼 하나의 값을 뽑을땐 괄호 제외! 


    2) 주말

    weekday(), isoweekday() 두개의 함수가 존재한다. 

    weekday()는 월요일을 0으로 시작하고 

    isoweekday()는 일요일이 0인 점이 다르다. 




    3. strftime vs strptime 

    a.strftime(strf + time) : 날짜와 시간(datetime)을 문자열로 출력

    a.strptime(strp + time) : 날짜와 시간 형식의 문자열을 datetime으로 변환


    1) strftime : datetime을 문자열로 변환함 

    a = datetime.today() print(a) # 2024-02-28 09:29:38.443488 print(a.strftime('%Y. %m. %d.')) #대문자 M은 minute / 소문자 m은 month # 2024. 02. 28. print(a.strftime('%H : %M : %S ')) # 09 : 29 : 38 print(a.strftime('%Y년 %m월 %d일, %H시 %M분 %S초 ')) # 2024년 02월 28일, 09시 29분 38초 print(f"지금의 시간은 {a.strftime('%H : %M : %S ')} 입니다") #지금의 시간은 09 : 35 : 10 입니다

    strftime을 쓰면, 문자열 중간에 년월일, 시분초를 넣을 수 있다. 

    하지만, 이 기능은 위에서 정리한 메서드 및 함수를 써서도 가능함


    포맷 지정자설명
    %Y 네 자리 수의 연도 (예: 2019, 2020, 2021)
    %y 두 자리 수의 연도 (예: 19, 20, 21)
    %D %m/%d/%y와 동일
    %m 0을 채운 두 자리 수의 월 (예: 01, 02, ..., 11, 12)
    %d 0을 채운 두 자리 수의 일 (예: 01, 02, ..., 30, 31)
    %I0을 채운 12시간제의 시간 (예: 01, 02, ..., 12)
    %H 0을 채운 24시간제의 시간 (예: 00, 01, ..., 23)
    %h 0을 채운 12시간제의 시간 (예: 00, 01, ..., 12)
    %M 0을 채운 두 자리 수의 분 (예: 00, 01, ..., 58, 59)
    %S0을 채운 두 자리 수의 초 (예: 00, 01, ..., 58, 59)

    * 대소문자 주의



    2) strptime : 날짜와 시간 형식의 문자열을 datetime으로 변환

    d = '2022-03-03'
    cur = datetime.strptime(d, '%Y-%m-%d')
    # 2022-03-03 00:00:00
    
    d = '2022, 03, 03'
    cur = datetime.strptime(d, '%Y, %m, %d')
    # 2022-03-03 00:00:00
    
    d = '2022, 03, 03. 2:30:32'
    cur = datetime.strptime(d, '%Y, %m, %d. %H:%M:%S')
    

    # 2022-03-03 02:30:32i


    strptime 은 단순히 문자열로 입력받은 날짜나 시간을 datetime 타입으로 변환하는 것 ! 

    type(d)는 문자열인데 strptime 을 거치면, type(cur) 했을때 datetime 타입이 된다. 


    이 함수를 쓸때는 형식이랑 %대소문자를 잘 지켜야한다. 

    아래는 오류나는 경우를 적어봄

    d = '2022, 03, 03' cur = datetime.strptime(d, '%y, %m, %d') #오류남. %Y 형식이어야함 cur = datetime.strptime(d, '%Y-%m-%d') #오류남. 연결이 동일해야함



    4. 미래의 시간 

    later = datetime.today()+ timedelta(5)

    5일 뒤의 시간이 리턴됨 




    댓글

    이 블로그의 인기 게시물

    [KT 에이블스쿨 - IT 트랜드] 국내외 AI 관련 규제

    KT 에이블스쿨 : IT 인프라 (1일차~5일차) 공부 정리

    KT 에이블스쿨 : 핀테크 아이디어 공모전