python으로 Js 시간 데이터 변환과 시간 차 계산

·2022년 5월 11일
0

javascript 형식으로 저장된 ISO방식의 시간 문자열을
python에서 읽어내 현재 시간과의 차를 구해야 했다.
여기서 문제는 저장된 시간데이터는 타임존이 포함되어있고
python에서 구하는 datetime.utcnow()는 타임존이 포함되어있지 않았다.
이에 서로 다른 포맷으로 계산값에 에러가 발생하였고
서치한 결과 아래 글에서 해답을 발견했다

https://twpower.github.io/29-iso8601-utc-and-python-example


해결방법

import dateutil.parser

print(str(dateutil.parser.parse("자바스크립트 ISO시간"))) # 비교할 시간

우선 dateutil을 사용해서 string 타입인 자바스크립트 데이터를 파이썬의 datetime 객체로 만든다

from datetime import datetime, timezone

print(datetime.now(timezone.utc)) #현재 시간

timezone을 사용해 위 코드를 입력하면 타임존이 포함되있는 UTC 시간을 받아올 수 있다.

def time_difference(compare_time):
    thisTime = datetime.now(timezone.utc)
    postTime = dateutil.parser.parse(compare_time)
    restTime = thisTime - postTime
    if restTime.days > 0 :
        return str(restTime.days) + '일' 
    elif int(restTime.seconds/3600)>0 :
        return str(int(restTime.seconds/3600)) + '시간'
    elif int(restTime.seconds /60) > 5:
        return str(int(restTime.seconds /60)) + '분'
    else :
        return '방금'

시간차는 그냥 빼주면 된다.
결과적으로 완성한 코드


시간값을 구하는 python에 관련된 글이 너무 많아서 오히려 내가 원하는 부분을 찾기가 어려웠다
또한 처음엔 타임존을 꼭 달고 있어야 하나 싶어서 제거하는 방향으로 접근했었는데
위에 링크한 게시글에서 타임존을 표기해야 하는 이유를 잘 알려주고 있다.

profile
나 예인쓰, 응애인디

0개의 댓글