#!/usr/bin/env python3 """ kis_trader/utils/trade_time.py — 실매·백테 시각 파싱 공통 ======================================================== 실매 buy_time: ``YYYY-MM-DD HH:MM:SS`` 백테 봉/틱키: ``YYYYMMDDHHMM`` / ``YYYYMMDDHHMMSS`` 엔진별 ``_t2dt`` 가 ``[:12]``+``%Y%m%d%H%M`` 만 쓰면 실매 시간컷이 ``None`` 으로 무력화된다 → 전 전략이 이 함수를 쓰도록 통일. """ from __future__ import annotations from datetime import datetime def parse_trade_datetime(t: str) -> datetime: """실매·백테 시각 문자열 → datetime. 실패 시 ValueError.""" s = str(t or "").strip() if not s: raise ValueError("empty time") if "-" in s or "T" in s or ":" in s: compact = ( s.replace("-", "").replace(":", "").replace(" ", "").replace("T", "") ) digits = "".join(c for c in compact if c.isdigit()) else: digits = "".join(c for c in s if c.isdigit()) if len(digits) >= 14: return datetime.strptime(digits[:14], "%Y%m%d%H%M%S") if len(digits) >= 12: return datetime.strptime(digits[:12], "%Y%m%d%H%M") raise ValueError(f"bad time: {t!r}")