날짜에 대한 표준 JSON 형식은 존재하지 않습니다. 다만 JavaScript에는 사람이 읽기 쉽고, 올바르게 정렬되며, 밀리초 단위의 소수 초(시간 순서를 재구성하는 데 유용)를 포함하고 ISO 8601 표준을 준수하는 표준 날짜 형식이 있습니다.
Python의 날짜 객체는 strftime 함수를 사용해 JavaScript 날짜 형식으로 변환할 수 있으며, 이 값을 필요로 하는 클라이언트 측에서 역직렬화(deserialize)하여 사용하면 됩니다.
Python 3에서 isoformat() 함수 활용하기
Python 3에서 ISO 8601 형식의 문자열 날짜를 얻으려면 isoformat() 함수를 사용하는 것이 가장 간단합니다. 이 함수는 날짜와 시간을 ISO 8601 형식 그대로 반환합니다. 예를 들어 2017년 12월 31일이라는 날짜를 입력하면 '2017-12-31T00:00:00'과 같은 문자열을 얻을 수 있습니다.
예제 코드
from datetime import datetime
my_date = datetime.now()
print(my_date.isoformat())
실행 결과
2018-01-02T22:08:12.510696
구버전 Python에서 strftime() 함수 활용하기
Python 3 미만의 구버전에서는 strftime 함수를 사용해 datetime 객체를 원하는 형식의 문자열로 직접 포맷팅할 수 있습니다. 아래 예제처럼 포맷 코드를 지정하면 ISO 8601과 유사한 출력 결과를 얻을 수 있습니다.
예제 코드
from datetime import datetime
my_date = datetime.now()
print(my_date.strftime('%Y-%m-%dT%H:%M:%S.%f%z'))
실행 결과
2018-01-02T22:10:05.284208
정리
JSON 자체에는 날짜 전용 데이터 타입이 없기 때문에, 일반적으로 ISO 8601 형식의 문자열로 변환하여 전달하는 것이 국제적인 표준 관행입니다. 최신 Python 환경이라면 isoformat()을, 구버전이라면 strftime()을 활용하면 손쉽게 처리할 수 있습니다.