Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 날짜를 Python 날짜 객체로 변환하는 완벽 가이드

JavaScript의 날짜(Date)를 Python 날짜 객체로 변환해야 하는 경우는 주로 AJAX 요청이나 Node.js 환경에서의 IPC 메시지처럼 네트워크를 통해 데이터를 전송할 때입니다. 이때 날짜는 문자열 형태로 전달되며, 원하는 형식을 직접 선택할 수 있습니다. 받은 쪽에서는 Python의 strptime() 함수를 사용해 문자열을 다시 날짜 객체로 파싱하면 됩니다.

날짜와 시간 데이터를 주고받을 때는 ISO 8601과 같은 표준화된 형식을 사용하는 것이 좋습니다. 간단한 예제를 통해 살펴보면 더욱 이해하기 쉽습니다.

변환 예제

import datetime
# JavaScript로부터 전달받은 문자열
date_string = '2017-12-31'
date_format = '%Y-%m-%d'
try:
    date_obj = datetime.datetime.strptime(date_string, date_format)
    print(date_obj)
except ValueError:
    print("잘못된 날짜 형식입니다. YYYY-MM-DD 형식이어야 합니다.")

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다:

2017-12-31 00:00:00

strptime()에서 사용할 수 있는 포맷 지시자

strptime() 함수는 다양한 포맷 지시자(directive)를 지원합니다. 아래 표는 형식 문자열에 사용할 수 있는 주요 지시자와 그 의미를 정리한 것입니다.

지시자의미
%a요일의 축약형 이름 (예: Sun, Mon)
%A요일의 전체 이름 (예: Sunday, Monday)
%b월의 축약형 이름 (예: Jan, Dec)
%B월의 전체 이름 (예: January, December)
%c해당 로케일에 맞는 날짜 및 시간 표현
%d월의 일(日), 십진수 [01~31]
%H시간(24시간제), 십진수 [00~23]
%I시간(12시간제), 십진수 [01~12]
%j연중 몇 번째 날인지, 십진수 [001~366]
%m월, 십진수 [01~12]
%M분, 십진수 [00~59]
%p오전/오후 표시 (AM 또는 PM)
%S초, 십진수 [00~61] (윤초 포함)
%U연중 몇 번째 주인지 (일요일이 한 주의 시작), 십진수 [00~53]. 새해 첫 일요일 이전의 모든 날은 0주차로 간주됩니다.
%w요일, 십진수 [0(일요일)~6]
%W연중 몇 번째 주인지 (월요일이 한 주의 시작), 십진수 [00~53]. 새해 첫 월요일 이전의 모든 날은 0주차로 간주됩니다.
%x해당 로케일에 맞는 날짜 표현
%X해당 로케일에 맞는 시간 표현
%y세기 없는 연도, 십진수 [00~99]
%Y세기를 포함한 연도, 십진수 (예: 2017)
%Z시간대 이름 (시간대가 없으면 빈 문자열)
%%리터럴 '%' 문자 자체

참고 팁

JavaScript에서 Date.toISOString() 메서드를 사용하면 '2017-12-31T00:00:00.000Z' 형태의 ISO 8601 문자열을 얻을 수 있습니다. 이 경우 Python에서는 %Y-%m-%dT%H:%M:%S.%fZ 같은 형식으로 파싱하거나, Python 3.7 이상에서는 datetime.fromisoformat()을 활용할 수도 있습니다. 클라이언트와 서버 간에 일관된 형식을 미리 약속해 두면 변환 오류를 크게 줄일 수 있습니다.