Daily Develope

[Python] 시간 변환 (datetime) 본문

Develope/Python

[Python] 시간 변환 (datetime)

noggame 2022. 12. 5. 15:24

생성


  • 현재시간 생성
from datetime import date

today:datetime = date.today()

 

포맷 변환


X to Datetime

  • timestamp to datetime
from datetime import datetime

...

datetime.fromtimestamp(timestamp_value).strftime("%Y/%m/%d %H:%M:%S")
# output : 2000/01/01 12:34:56
  • string to datetime
from datetime import datetime
from datetime import date

today_str = "2000 01 01"
today = datetime.strptime(today_str, "%Y %m %d")

# print(today) : 2000 01 01
  • datetime to datetime (포맷 변환)

Datetime to String

from datetime import datetime
from datetime import date

today:datetime = date.today()
today_str = today.strftime("%Y %m %d")

# print(today_str) : 2000 01 01

 

시간 변환 (based on Timezone)


ㅇ 예시

  • 입력 : Mon, 01 Oct 2018 11:24:42 EDT (%a, %d %b %Y %H:%M:%S %Z)
  • 출력 : Tue, 02 Oct 2018 00:24:42 KST

ㅇ 샘플 코드 및 설명

from dateutil import parser
import pytz
from email.utils import parsedate_tz

def convert_to_kst(date_str: str) -> str:
    # 문자열을 datetime 객체로 파싱 (타임존 포함)
    time_tuple = parsedate_tz(date_str)

    # UTC timestamp 확인
    tz_offset_seconds = time_tuple[-1]
    tz_offset_hours = tz_offset_seconds / 36000
    tz_offset_hours = str(tz_offset_hours).replace(".", "")+":00" if abs(tz_offset_hours) > 0 else ""

    print(f"타임존 오프셋 (초): {tz_offset_seconds}")
    print(f"타임존 오프셋 (시): {tz_offset_hours}")

    date_str += f" {tz_offset_hours}"
    # 한국 시간대로 변환
    dt = parser.parse(date_str)  # EDT는 자동 인식됨
    dt_kst = dt.astimezone(pytz.timezone('Asia/Seoul'))

    print("원본 시간 (EDT):", dt)
    print("변환된 시간 (KST):", dt_kst)

    return dt_kst.strftime("%a, %d %b %Y %H:%M:%S %Z")

if __name__ == "__main__":
    res = convert_to_kst("Mon, 01 Oct 2018 11:24:42 EDT")
    print(res)
  1. 입력된 시간으로부터 timezone 정보를 획득합니다.
  2. timezone 정보로 부터 UTC 시간 정보를 얻고, "+00:00" 또는 "-00:00" 문자열 형태로 변환합니다.
  3. digit 문자열로 부터 입력된 시간의 UTC 코드를 인식하고, KST 시간으로 변환합니다.
  4. KST로 변환된 시간을 반환합니다.

 

시간 기술 포맷

Python docs. : strftime-and-strptime-format-codes

Comments