소개
Python 의 datetime 모듈은 날짜와 시간을 조작하기 위한 다양한 클래스를 제공합니다. 이 랩에서는 이 모듈에서 가장 일반적으로 사용되는 클래스와 함수 중 일부를 살펴보고, 날짜, 시간, 시간 델타 (time delta) 등을 사용하여 다양한 작업을 수행하는 방법을 배우겠습니다.
성과
datetime모듈
Python 의 datetime 모듈은 날짜와 시간을 조작하기 위한 다양한 클래스를 제공합니다. 이 랩에서는 이 모듈에서 가장 일반적으로 사용되는 클래스와 함수 중 일부를 살펴보고, 날짜, 시간, 시간 델타 (time delta) 등을 사용하여 다양한 작업을 수행하는 방법을 배우겠습니다.
datetime 모듈datetime 모듈로 작업을 시작하려면 먼저 모듈을 가져와야 합니다.
새로운 Python 인터프리터 세션을 엽니다:
python3
다음 코드 줄을 사용하여 이 작업을 수행할 수 있습니다:
import datetime
datetime 모듈은 날짜 작업을 위한 date 클래스를 제공합니다. 특정 날짜를 나타내는 날짜 객체를 생성하려면, 연도, 월, 일을 인수로 받는 date() 생성자를 사용할 수 있습니다. 예를 들어:
d = datetime.date(2021, 12, 31)
print(d)
이렇게 하면 2021 년 12 월 31 일을 나타내는 날짜 객체가 생성되고, "YYYY-MM-DD" 형식으로 출력됩니다.
날짜 외에도, datetime 모듈은 시간 작업을 위한 time 클래스도 제공합니다. 특정 시간을 나타내는 시간 객체를 생성하려면, 시, 분, 초를 인수로 받는 time() 생성자를 사용할 수 있습니다. 예를 들어:
t = datetime.time(12, 30, 15)
print(t)
이렇게 하면 오후 12 시 30 분 15 초를 나타내는 시간 객체가 생성되고, "HH:MM:SS" 형식으로 출력됩니다.
날짜와 시간을 모두 사용하려면, 날짜와 시간을 결합하는 datetime 클래스를 사용할 수 있습니다. 특정 날짜와 시간을 나타내는 datetime 객체를 생성하려면, 연도, 월, 일, 시, 분, 초를 인수로 받는 datetime() 생성자를 사용할 수 있습니다. 예를 들어:
dt = datetime.datetime(2021, 12, 31, 12, 30, 15)
print(dt)
이렇게 하면 2021 년 12 월 31 일 오후 12 시 30 분 15 초를 나타내는 datetime 객체가 생성되고, "YYYY-MM-DD HH:MM:SS" 형식으로 출력됩니다.
특정 날짜 및 시간 작업 외에도, datetime 모듈은 시간 간격을 다루기 위한 timedelta 클래스도 제공합니다. timedelta 객체는 시간 간격을 나타내며, datetime 객체에 더하거나 빼서 새로운 datetime 객체를 생성할 수 있습니다. 예를 들어:
d1 = datetime.date(2021, 12, 31)
d2 = d1 + datetime.timedelta(days=1)
print(d2)
이렇게 하면 하루를 나타내는 timedelta 객체가 생성되어 date 객체 d1에 더해지고, 2022 년 1 월 1 일을 나타내는 새로운 date 객체가 생성되어 "YYYY-MM-DD" 형식으로 출력됩니다.
datetime 모듈은 datetime 객체를 문자열로 형식 지정하는 데 사용할 수 있는 strftime() 메서드를 제공합니다. 이 메서드는 출력 문자열의 원하는 형식을 지정하는 형식 문자열을 인수로 받습니다. 예를 들어, 다음 코드는 datetime 객체를 "YYYY-MM-DD HH:MM:SS" 형식의 문자열로 형식 지정합니다.
dt = datetime.datetime(2021, 12, 31, 12, 30, 15)
s = dt.strftime('%Y-%m-%d %H:%M:%S')
print(s)
"2021-12-31 12:30:15"를 출력합니다.
datetime 모듈은 또한 문자열을 구문 분석하고 datetime 객체를 생성하는 데 사용할 수 있는 strptime() 클래스 메서드를 제공합니다. 이 메서드는 두 개의 인수를 받습니다. 구문 분석할 문자열과 입력 문자열의 예상 형식을 지정하는 형식 문자열입니다. 예를 들어, 다음 코드는 "YYYY-MM-DD HH:MM:SS" 형식의 문자열을 구문 분석하고 datetime 객체를 생성합니다.
s = '2021-12-31 12:30:15'
dt = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
print(dt)
"2021-12-31 12:30:15"를 출력합니다.
형식 문자열은 연도, 월, 일, 시, 분, 초와 같은 날짜 및 시간의 서로 다른 부분에 해당하는 문자열입니다.
다음은 형식 문자열에서 가장 일반적으로 사용되는 몇 가지 문자입니다.
%Y: 세기가 있는 연도를 10 진수로 표시합니다. 예를 들어, "2022"%m: 월을 0 으로 채워진 10 진수로 표시합니다. 예를 들어, 1 월은 "01", 12 월은 "12"%d: 월의 날짜를 0 으로 채워진 10 진수로 표시합니다. 예를 들어, 월의 첫 번째 날은 "01", 월의 마지막 날은 "31"%H: 시 (24 시간 시계) 를 0 으로 채워진 10 진수로 표시합니다. 예를 들어, 자정은 "00", 정오는 "12", 오후 11 시는 "23"%M: 분을 0 으로 채워진 10 진수로 표시합니다. 예를 들어, 정각은 "00", 시의 반은 "30"%S: 초를 0 으로 채워진 10 진수로 표시합니다. 예를 들어, 분의 시작은 "00", 분의 끝은 "59"이러한 문자 외에도 형식 문자열에는 입력 문자열과 일치하는 리터럴 문자를 포함할 수도 있습니다. 예를 들어, 다음 형식 문자열은 "YYYY-MM-DD" 형식의 날짜와 일치합니다.
fmt = '%Y-%m-%d'
그런 다음 strptime() 메서드는 이 형식 문자열을 사용하여 입력 문자열을 구문 분석하고 연도, 월 및 일을 추출합니다.
형식 문자열이 입력 문자열과 정확히 일치해야 한다는 점에 유의해야 합니다. 그렇지 않으면 예외가 발생합니다. 입력 문자열의 형식을 잘 모르는 경우 try 및 except 문을 사용하여 발생할 수 있는 잠재적인 예외를 처리할 수 있습니다.
또한 strptime() 메서드는 스레드 안전하지 않고 속도가 느린 등의 몇 가지 문제로 인해 널리 권장되지 않습니다. 더 유연하고 효율적인 dateutil.parser.parse() 함수를 사용하는 것이 좋습니다.
datetime 모듈은 시간대 작업을 위해 사용할 수 있는 pytz 라이브러리도 제공합니다. 사용하려면 먼저 명령줄에서 pip install pytz를 실행하여 설치해야 합니다.
설치 후, pytz.timezone 함수를 사용하여 특정 시간대에 대한 시간대 객체를 생성할 수 있습니다. 예를 들어:
from datetime import datetime
import pytz
dt = datetime.now(pytz.timezone('US/Pacific'))
print(dt)
이렇게 하면 현재 날짜와 시간을 태평양 표준시 (US) 시간대로 하는 datetime 객체가 생성되고 "YYYY-MM-DD HH:MM:SS-TZ" 형식으로 출력됩니다.
이 랩에서는 Python datetime 모듈에서 가장 일반적으로 사용되는 일부 클래스와 함수를 살펴보고, 날짜, 시간 및 시간 델타 (timedelta) 작업과 같은 다양한 작업을 수행하는 방법을 배웠습니다. 적절한 생성자를 사용하여 날짜, 시간 및 datetime 객체를 생성하는 방법과 특정 시점을 나타내기 위해 이를 결합하는 방법을 살펴보았습니다. 또한 시간의 지속 시간을 나타내는 데 사용할 수 있는 timedelta 클래스와 datetime 객체에 대한 산술 연산을 수행하는 방법을 배웠습니다.
이 랩에서 제공된 예제 외에도 datetime 모듈은 시간대 작업, 날짜 및 시간 형식 지정, 문자열에서 날짜 및 시간 구문 분석을 위한 다양한 다른 함수와 클래스를 제공합니다. 이는 Python 에서 다양한 시간 관련 문제를 해결하는 데 사용할 수 있는 강력하고 다재다능한 모듈입니다.
이 랩에서는 날짜 및 시간 형식 변환 및 시간대 변환을 포함하여 Python datetime 모듈의 고급 기능 중 일부를 살펴보았습니다. strftime() 및 strptime() 메서드를 사용하여 날짜와 시간을 문자열로 형식화하고 구문 분석하는 방법과 pytz 라이브러리를 사용하여 시간대를 처리하는 방법을 배웠습니다. 이러한 도구를 사용하면 Python 에서 날짜와 시간을 효과적으로 작업하고 다양한 시간 관련 문제를 해결할 수 있습니다.