날짜와 시간

PythonBeginner
지금 연습하기

소개

Python 의 datetime 모듈은 날짜와 시간을 조작하기 위한 다양한 클래스를 제공합니다. 이 랩에서는 이 모듈에서 가장 일반적으로 사용되는 클래스와 함수 중 일부를 살펴보고, 날짜, 시간, 시간 델타 (time delta) 등을 사용하여 다양한 작업을 수행하는 방법을 배우겠습니다.

성과

  • datetime 모듈
이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 100%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

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" 형식으로 출력됩니다.

Timedelta 사용하기

특정 날짜 및 시간 작업 외에도, 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() 메서드는 이 형식 문자열을 사용하여 입력 문자열을 구문 분석하고 연도, 월 및 일을 추출합니다.

형식 문자열이 입력 문자열과 정확히 일치해야 한다는 점에 유의해야 합니다. 그렇지 않으면 예외가 발생합니다. 입력 문자열의 형식을 잘 모르는 경우 tryexcept 문을 사용하여 발생할 수 있는 잠재적인 예외를 처리할 수 있습니다.

또한 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 에서 날짜와 시간을 효과적으로 작업하고 다양한 시간 관련 문제를 해결할 수 있습니다.