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

Python에서 날짜를 일반 형식으로 출력하는 방법

Python에서 print 함수를 사용해 날짜를 직접 출력하면 우리가 원하는 일반적인 날짜 형식으로 표시됩니다.

예제

import datetime
today = datetime.date.today()
print(today)

출력 결과

다음과 같은 출력을 얻게 됩니다.

2018-01-02

이것이 바로 우리가 원하는 형식입니다. 하지만 이 날짜를 리스트에 추가한 후 출력하면 상황이 달라집니다.

예제

import datetime
my_list = []
today = datetime.date.today()
my_list.append(today)
print(my_list)

출력 결과

이번에는 다음과 같은 출력이 나타납니다.

[datetime.date(2018, 1, 2)]

원인 분석

이런 현상이 발생하는 이유는 datetime이 객체(object)이기 때문입니다. 즉, datetime을 다룰 때는 문자열이나 타임스탬프가 아닌 객체 자체를 조작하게 됩니다.

Python의 모든 객체는 두 가지 문자열 표현 방식을 가지고 있습니다.

  • 일반 표현(str): print 함수가 사용하는 표현 방식으로, str() 함수를 통해 얻을 수 있습니다. 내부적으로는 클래스의 __str__ 메서드로 구현되어 있습니다.
  • 공식 표현(repr): 객체의 데이터로서의 본질을 나타내는 표현 방식으로, repr() 함수를 통해 얻을 수 있습니다.

리스트를 출력할 때는 내부 요소에 대해 repr 표현이 사용되기 때문에 datetime.date(2018, 1, 2)처럼 객체 형태로 표시되는 것입니다.

해결 방법

따라서 올바른 날짜 형식을 얻으려면 datetime 객체에 str() 함수를 명시적으로 호출해야 합니다.

예제

import datetime
my_list = []
today = datetime.date.today()
my_list.append(str(today))
print(my_list)

출력 결과

이제 원하는 형식의 출력을 얻을 수 있습니다.

['2018-01-02']

이처럼 리스트나 다른 컨테이너에 날짜를 저장할 때는 str(today)처럼 미리 문자열로 변환하거나, 출력 시 리스트 컴프리헨션을 활용해 [str(d) for d in my_list]와 같이 변환하는 것이 좋은 습관입니다.