ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [datetime] 시간포맷: datetime.strftime("%Y-%m-%d")
    Python 2020. 12. 18. 21:43

    strftime으로 현재 시간 등을 출력할 때, 자주 안 쓰는 포맷코드는 기억하기가 쉽지 않다.

    제목인 datetime.strftime("%Y-%m-%d")는 "2020-12-18"처럼 4자리 연도-2자리 월-2자리 일 형태다.

     

    혹시 또 필요할 수 있으니, 자주 쓸 법한 것들은 정리해두고자 한다.

     

    공식문서에서

    strftime() and strptime() Format Codes(strftime()과 strptime() 포맷 코드)

    로 검색하면 전체 테이블을 확인할 수 있다.

     

    Directive Meaning Example
    %a 짧은 요일이름 Sun, Mon, …, Sat..
    %A 전체 요일이름 Sunday, Monday, …, Saturday
    %w 숫자로 표현한 요일, 0이 일요일, 6이 토요일임 0, 1, …, 6
    %d 연월일시의 '일'자. 0 패딩 들어감 01, 02, 03, ..., 31
    %b 짧은 월 이름 Jan, Feb, ...
    %B 전체 월 이름 January, February, …, December
    %m 연월일시의 '월', 0 패딩 들어감 01, 02, ..., 12
    %y 연도 뒤의 2자리 (2021년의 경우 21) 00, 01, ..., 99
    %Y 연도 4자리, 0 패딩 들어감 0001, 0002, ..., 2013, 2014, ..., 9999
    %H 24시간제의 시간, 0 패딩 들어감, 24가 없고 00이 있음 00, 01, 02, ..., 23
    %p AM or PM AM, PM
    %M 시간: 분: 초의 분, 0 패딩 들어감 00, 01, ..., 59
    %S 시간: 분: 초의 초, 0 패딩 들어감 00, 01, ..., 59
    %j 1년 중 몇 번째 '일'인지, 0 패딩 들어감 001, 002, ..., 366
    %U 1년 중 몇 번째 '주'인지(일요일 시작 기준), 0 패딩 들어감 00, 01, ..., 53
    %W 1년 중 몇 번째 '주'인지(월요일 시작 기준), 0 패딩 들어감 00, 01, ..., 53

    숫자가 아닌 요일이나 월이름, AM/PM 같은 경우, locale 설정에 따라 출력값이 다르다고 한다.

     

     

    자주 쓸 것 같은 조합

    import time
    import datetime
    
    now = datetime.datetime.now()
    finalDay = datetime.datetime(2020, 12, 31)
    timedelta = finalDay - now
    
    print("오늘 날짜: " + now.strftime("%Y-%m-%d"))
    # 오늘 날짜: 2020-12-18
    
    print("현재 시각: " + now.strftime("%H:%M:%S %p"))
    # 현재 시각: 12:41:10 PM
    
    print("오늘은 " + now.strftime("%Y년도의 " + "%j" + "번째 날입니다."))
    # 오늘은 2020년도의 353번째 날입니다.
    
    print("이번주는 " + now.strftime("%Y년도의 " + "%W" + "번째 주입니다."))
    # 이번주는 2020년도의 50번째 주입니다.
    
    print("올해 마지막 날까지 " + str(timedelta.days) + "일 남았습니다.")
    # 올해 마지막 날까지 12일 남았습니다.
    
    print("올해 마지막 날까지 총 " + str(timedelta.total_seconds()) + "초 남았습니다.")
    # 올해 마지막 날까지 총 1077529.023712초 남았습니다.

    현재 시간을 epoch time으로 표현하고 싶다면

    import datetime
    a = datetime.datetime.now() # datetime.datetime(2020, 12, 21, 13, 20, 49, 928330)
    b = datetime.datetime(1970,1,1) # datetime.datetime(1970, 1, 1, 0, 0)
    c = a-b # datetime.timedelta(days=18617, seconds=48049, microseconds=928330)
    c.total_seconds() # 1608556849.92833

    우분투에서는 아래처럼 하면 된다.

    # date +%s // 1608524666

    댓글

Designed by Tistory.