파이썬에서 시간, 날짜 구하기

반응형
    반응형

    datetime 모듈을 이용한 시간 날짜 구하는 방법입니다.

     

    현재시간,날짜 구하기

    현재시간 구하는 방법입니다. 연도부터 마이크로초까지 나옵니다.

    메쏘드는 today() 를 쓰거나 now() 를 쓰면 됩니다.

    둘다 같은 결과가 나옵니다.

     

    from datetime import datetime
    today = datetime.today()        #현재 시간
    now = datetime.now()          #현재 시간
    print(today)
    print(now)

     

    마이크로초에서 시간 차이가 있었지만 아무튼 둘다 같은 결과가 나옵니다.

     

    현재날짜에서 추출하기(심플)

    현재 날짜에서 연이나 일, 시간 추출하는 간단한 메쏘드입니다.

    정말 간단하게 시간 추출할 때 유용합니다.

     

    print(now.year)          #연
    print(now.month)         #월
    print(now.day)           #일
    print(now.hour)          #시
    print(now.minute)        #분
    print(now.second)        #초
    print(now.microsecond)   #마이크로초

     

    현재날짜에서 추출하기(원하는 포맷)

    원하는 포맷으로 추출을 해봅시다. 타입은 문자열로 바뀝니다.

    stftime()을 사용합니다.

     

    print(now.strftime('%Y-%m-%d'))                  #연-월-일
    print(now.strftime('%H:%M:%S'))                  #시:분:초
    print(now.strftime('%Y-%m-%d %H:%M:%S'))         #연-월-일 시:분:초

     

    현재날짜 기준으로 다른 날 추출하기

    timedelta를 이용한 다른날을 추출하는 방법입니다. 

    현재에서 1년전이나 1주전, 1일전 등 과거에 특정한 날짜나 시간을 요청할 수 있고

    미래의 특정 시점도 요청할 수 있습니다.

    과거로 돌리려면 음수로 미래는 양수를 넣습니다.

    timedelta는 datetime의 메쏘드라서 모듈을 임포트하겠습니다.

     

    import datetime
    
    print(now+datetime.timedelta(weeks=1))         #1주 후
    print(now+datetime.timedelta(weeks=-1))        #1주 전
    print(now+datetime.timedelta(hours=5))         #5시간 후

     

    timedelta 파라미터는 다음과 같습니다.

    timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

    timedelta는 week가 가장 큰 단위라서 연,월을 구할 수가 없습니다.

     

    연,월을 하고 싶다면 relativedelta()를 사용합니다. 

    relativedleta()는 datetime모듈이 아닌 dateutil.relativedelta라는 모듈에서 가져옵니다.

    timedelta와 마찬가지로 과거는 음수, 미래는 양수로 합니다. 

    이게 now에서 더한다는 가정입니다.

    now에서 빼서 구하고 싶다면 과거는 양수, 미래는 음수로 합니다.

     

    from dateutil.relativedelta import relativedelta
    
    print(now+relativedelta(months=1))     #1달 후
    print(now+relativedelta(years=1))      #1년 후

     

    relativedelta는 거의 모든 날짜에 대해서 되서 relativedelta를 쓰면 됩니다. 

    timedelta에서 연도 구하려고 구글링할 분들을 위해 적어놓습니다.

    파라미터는 다음과 같습니다.

     

    relativedelta( dt1=None, dt2=None, years=0, months=0, days=0, leapdays=0, weeks=0, hours=0, minutes=0, seconds=0, microseconds=0, year=None, month=None, day=None, weekday=None, yearday=None, nlyearday=None, hour=None, minute=None, second=None, microsecond=None, )

     

     

    날짜 지정하기

    현재 시간에 의존하지 않고 원하는 날짜를 시간형식으로 바꾸겠습니다.

    원하는 날짜를 그냥 쓰면 문자열로 인식하기 때문에 strptime() 메쏘드를 씁니다.

    이건 datetime.datetime.strptime() 으로 써야하는데 datetime에서 datetime을 임포트해서 쓰겠습니다.

    원하는 포맷으로 만들 수 있지만 정석적인 연-월-일 시:분:초 로 하겠습니다.

     

    from datetime import datetime 
    fix_date = datetime.strptime('2021-05-05 15:30:15', '%Y-%m-%d %H:%M:%S' ))
    print(fix_date)
    type(fix_date)

     

    타입을 보면 datetime.datetime으로 되어있습니다. 

     

     

    부등식 성립?

    시간도 부등식이 성립합니다.

    다만 타입, 포맷이 같아야먄 성립합니다.

    포맷이 다르면 오류 납니다.

     

    #포맷이 같은 경우
    now = datetime.now()					  		    #2021-06-30 19:10:27
    fix_date = datetime.strptime('2021-05-05 15:30:15', '%Y-%m-%d %H:%M:%S' )   #2021-05-05 15:30:15
    now<fix_date    

     

    #포맷이 다른 경우
    today_date = now.strftime('%Y-%m-%d')
    today_date<fix_date

     

    datetime 모듈을 이용한 시간,날짜 다루는 방법은 더 많을텐데 다른 것이 있으면 추후에 포스팅을 하겠습니다.

     

     

    관련 포스팅

    [Python/Pandas] - [Pandas] 시간데이터 만들기(date_range)

    [Python/Pandas] - [Pandas] 시간 데이터 처리

    [Python/Pandas] - [Pandas]DataFrame 시간간격 재조정(Resampling)

    댓글

    Designed by JB FACTORY

    ....