getKST 업데이트 했습니다
getKST v1.0.1 까지의 내용: https://okky.kr/articles/1564120
여기서부턴 v1.0.2~v1.1.1까지의 얘기를 해보려 합니다.
v1.0.2
기존의 v1.0.1까지는 순수하게 datetime과 timezone에만 의존했습니다.
그러나, Windows 환경에선 기본적으로 timezone 데이터가 없다는 것을 알게 되었고, Windows 환경일 때 tzdata 패키지를 설치하도록 변경하고 코드를 약간 수정했습니다.
from __future__ import annotations
from datetime import datetime
from zoneinfo import ZoneInfo
KST = ZoneInfo("Asia/Seoul")
DEFAULT_FORMAT = "%Y-%m-%d %H:%M:%S"
def getKST(format: str = DEFAULT_FORMAT, dt: datetime | None = None) -> str:
if dt is None:
target = datetime.now(tz=KST)
elif dt.tzinfo is None:
target = dt.replace(tzinfo=KST)
else:
target = dt.astimezone(KST)
return target.strftime(format)V1.1.0
React를 공부해보려고 혼자서 작은 todo list 웹 사이트를 만드는 프로젝트를 진행하다가, getKST를 통해서 얻은 KST 값을 datetime 객체로 변환해야하는 과정이 필요했는데 이게 상당히 귀찮았습니다.
원래 datetime 객체로 변환하려면
from datetime import datetime
from getKST import getKST
KST = getKST()
KST_DATETIME = datetime.strptime(KST, "<원하는 포맷>")대충 이런식으로 작성해야 하는데.. 길고 복잡하잖아요.
그래서 v1.1.0 부턴 가져온 KST 값을 datetime 객체로 변환해주는 함수가 지원이 됩니다.
v1.1.0 이후의 버전부턴 datetime 객체 변환은 아래와 같이 쓰면 됩니다.
from getKST import getKST
KST = getKST() # type: string
KST = getKST().toDatetime() # type: datetime참 쉽죠?
v1.1.0~v1.1.1의 소스 코드는 아래와 같습니다.
from __future__ import annotations
from datetime import datetime
from zoneinfo import ZoneInfo
KST = ZoneInfo("Asia/Seoul")
DEFAULT_FORMAT = "%Y-%m-%d %H:%M:%S"
class KSTString(str):
_dt: datetime
def __new__(cls, value: str, dt: datetime) -> KSTString:
instance = super().__new__(cls, value)
instance._dt = dt
return instance
def toDatetime(self) -> datetime:
return self._dt
def getKST(format: str = DEFAULT_FORMAT, dt: datetime | None = None) -> KSTString:
if dt is None:
target = datetime.now(tz=KST)
elif dt.tzinfo is None:
target = dt.replace(tzinfo=KST)
else:
target = dt.astimezone(KST)
return KSTString(target.strftime(format), target)v1.1.1이 있는 이유는 README.md 파일 업뎃을 까먹어서.. ㅎㅎ
감사합니다~
GitHub 리포지토리 링크: https://github.com/HaeengIn/getKST
PyPi 프로젝트 링크: https://pypi.org/project/getKST
