datetime — 기본 날짜와 시간 타입

datetime — 기본 날짜와 시간 타입

datetime 모듈은 날짜와 시간을 다루는 클래스들을 제공합니다. 날짜와 시간 산술이 지원되지만, 구현의 초점은 출력 형식과 조작을 위한 효율적인 속성 추출에 있습니다. 참고로 calendar 모듈이 일반 달력 관련 함수를, time 모듈이 시간 접근과 변환을, zoneinfo 모듈이 IANA 시간대 데이터베이스를 나타내는 구체적인 시간대를 제공합니다.

출처: Python documentation

본문

Aware와 naive 객체

날짜와 시간 객체는 시간대 정보를 포함하는지에 따라 "aware" 또는 "naive"로 분류됩니다. aware 객체는 시간대, 일광 절약 시간 등 적용 가능한 알고리즘적·정치적 시간 조정에 대한 충분한 지식을 바탕으로 다른 aware 객체와의 상대적 위치를 파악할 수 있으며, 해석의 여지가 없는 특정 시점을 나타냅니다. naive 객체는 다른 날짜/시간 객체와의 위치를 명확히 파악할 충분한 정보를 담고 있지 않습니다. naive 객체가 UTC, 로컬 시간, 또는 다른 시간대를 나타내는지는 순전히 프로그램에 달려 있습니다.

aware 객체가 필요한 애플리케이션을 위해 datetimetime 객체에는 선택적인 시간대 정보 속성 tzinfo가 있으며, 이는 추상 tzinfo 클래스의 서브클래스 인스턴스로 설정할 수 있습니다. datetime 모듈은 단 하나의 구체적 tzinfo 클래스인 timezone 클래스를 제공하며, 이는 UTC로부터 고정 오프셋을 가진 단순 시간대를 나타낼 수 있습니다. 더 깊은 수준의 시간대 지원은 애플리케이션에 달려 있습니다.

상수

  • datetime.MINYEARdate 또는 datetime 객체에서 허용되는 가장 작은 연도 번호. 값은 1.
  • datetime.MAXYEAR — 허용되는 가장 큰 연도 번호. 값은 9999.
  • datetime.UTC — UTC 시간대 싱글톤 datetime.timezone.utc의 별칭 (3.11에서 추가).

사용 가능한 타입

  • datetime.date — 이상화된 naive 날짜로, 현재 그레고리력이 항상 효과가 있다고 가정합니다. 속성: year, month, day.
  • datetime.time — 특정 날짜와 무관한 이상화된 시간으로, 매일 정확히 246060초가 있다고 가정합니다 (윤초 개념 없음). 속성: hour, minute, second, microsecond, tzinfo.
  • datetime.datetime — 날짜와 시간의 결합. 속성: year, month, day, hour, minute, second, microsecond, tzinfo.
  • datetime.timedelta — 두 datetime 또는 date 인스턴스의 차이를 나타내는 기간. 마이크로초 해상도.
  • datetime.tzinfo — 시간대 정보 객체의 추상 기본 클래스.
  • datetime.timezonetzinfo 추상 기본 클래스를 UTC로부터의 고정 오프셋으로 구현하는 클래스 (3.2에서 추가).

이 타입들의 객체는 불변(immutable)입니다. 상속 관계: date, time, timedelta, tzinfoobject에서, timezonetzinfo에서, datetimedate에서 상속받습니다.

공통 속성

date, datetime, time, timezone 타입은 다음 공통 기능을 공유합니다: 이 타입의 객체는 불변이며, 해시 가능(hashable)하여 딕셔너리 키로 사용할 수 있고, pickle 모듈을 통한 효율적인 pickling을 지원합니다. date 타입의 객체는 항상 naive입니다.

주요 메서드

datetime.now(), datetime.fromtimestamp(), strftime()/strptime() 등이 대표적입니다. strftime()은 날짜/시간 객체를 지정한 형식 코드에 따라 문자열로 포맷하고, strptime()은 문자열을 파싱해 날짜/시간 객체로 만듭니다. timedelta를 활용한 산술로 두 날짜의 차이를 구하거나 날짜에 기간을 더할 수 있습니다. 시간대를 다루려면 timezone(timedelta(hours=N)) 같은 고정 오프셋이나 zoneinfo.ZoneInfo를 사용합니다.

더 알아보기 (Learn more)