파이썬 날짜와 시간 다루기: datetime.date, time 라이브러리
파이썬은 다양한 표준 라이브러리를 지원하여 개발자들의 생산성을 높이는 데 큰 역할을 합니다. 이 중 datetime.date와 time 라이브러리는 날짜와 시간을 다루는데 필요한 기능들을 제공합니다. 이 글에서는 이 두 라이브러리를 활용하여 파이썬에서 날짜와 시간을 어떻게 다루는지 알아보겠습니다.
1. datetime.date 라이브러리
datetime 모듈은 날짜와 시간을 함께 또는 따로 다루는 클래스들을 제공합니다. 이 중 date 클래스는 날짜를 저장하고, 연산하는 메서드들을 제공합니다.
1. 기본 사용법
datetime.date 클래스는 연, 월, 일을 인자로 받아 객체를 생성합니다. 이 객체는 .year, .month, .day 속성을 통해 각각의 값을 확인할 수 있습니다.
from datetime import date
d = date(2023, 5, 14)
print(d) # 출력: 2023-05-14
print(d.year) # 출력: 2023
print(d.month) # 출력: 5
print(d.day) # 출력: 14
2. 오늘 날짜 가져오기
datetime.date.today() 메서드를 사용하면 현재 시스템에서의 날짜를 가져올 수 있습니다.
from datetime import date
today = date.today()
print(today) # 출력: 2023-05-14
3. 날짜 사이의 차이 계산하기
두 date 객체 사이의 차이는 뺄셈 연산자를 통해 timedelta 객체로 얻을 수 있습니다. timedelta 객체는 days, seconds 등의 속성을 통해 시간 차를 확인할 수 있습니다.
from datetime import date
date1 = date(2023, 5, 14)
date2 = date(2023, 5, 20)
diff = date2 - date1
print(diff.days) # 출력: 6
2. time 라이브러리
time.time() 함수는 1970년 1월 1일(UNIX 시간의 시작점) 이후의 시간을 초 단위로 반환하는 반면, time.sleep() 함수는 프로그램의 실행을 주어진 초만큼 일시 중지시킵니다. 이런 기능들은 특정 작업을 지연시키거나, 프로그램의 실행 시간을 계산하는데 유용합니다.
time 라이브러리는 여러 가지 유용한 함수들을 제공합니다.
1. time.time
time.time() 함수는 1970년 1월 1일 이후의 시간을 초 단위로 반환합니다.
import time
print(time.time()) # 출력: 1684076124.3898067
2. time.localtime
time.localtime() 함수는 현재 시간을 struct_time 형태로 반환합니다.
import time
print(time.localtime()) # 출력: time.struct_time(tm_year=2023, tm_mon=5, tm_mday=15, tm_hour=0, tm_min=1, tm_sec=38, tm_wday=0, tm_yday=135, tm_isdst=0)
time.localtime() 함수가 반환하는 struct_time 객체는 다음의 요소들을 가지고 있습니다.
- tm_year : 연도
- tm_mon : 월 (1 to 12)
- tm_mday : 일 (1 to 31)
- tm_hour : 시간 (0 to 23)
- tm_min : 분 (0 to 59)
- tm_sec : 초 (0 to 61, 60과 61은 윤초(Leap Seconds)를 나타냄)
- tm_wday : 요일 (0 to 6, 월요일이 0)
- tm_yday : 연중 일수. (1 to 366)
- tm_isdst : 일광 절약 시간 (Daylight Saving Time) 표시. 값이 양수이면 DST 적용, 0이면 적용 안 됨, -1이면 알 수 없음.
현재 연도만을 추출하고 싶다면 다음과 같이 작성할 수 있습니다:
import time
t = time.localtime()
print(t.tm_year) # 현재 연도 출력: 2023
이 코드는 time.localtime() 함수를 통해 현재 시간을 struct_time 형태로 받아온 후, tm_year 필드를 이용해 연도만을 출력합니다. 이 방법을 사용하면, 다른 필드들도 동일한 방식으로 추출할 수 있습니다.
3. time.asctime
time.asctime() 함수는 struct_time을 받아 사람이 읽을 수 있는 형태로 변환하여 반환합니다.
import time
t = time.localtime()
print(time.asctime(t)) # 출력: Mon May 15 00:06:35 2023
4. time.ctime
time.ctime() 함수는 초 단위의 시간을 받아 사람이 읽을 수 있는 형태로 변환하여 반환합니다.
import time
t = time.time()
print(time.ctime(t)) # 출력: Mon May 15 00:08:09 2023
5. time.strftime
time.strftime() 함수는 시간을 문자열로 변환해 줍니다. 다양한 포맷 코드를 사용할 수 있습니다.
import time
t = time.localtime()
print(time.strftime("%Y-%m-%d %H:%M:%S", t)) # 출력: 2023-05-15 00:09:56
주요 포맷 코드는 다음과 같습니다:
- %Y: 4자리 연도
- %y: 2자리 연도
- %m: 월
- %d: 일
- %H: 시간(24시간제)
- %I: 시간(12시간제)
- %M: 분
- %S: 초
6. 프로그램 일시 중지시키기
time.sleep() 함수는 주어진 초만큼 프로그램을 일시 중지시킵니다. 이는 특정 시간 동안 대기하거나, 루프 사이에 딜레이를 주는 데 사용할 수 있습니다.
import time
print("Start")
time.sleep(5) # 5초 동안 대기
print("End")
☞ 이 두 라이브러리는 파이썬에서 날짜와 시간을 다루는데 필수적인 도구이므로, 잘 이해하고 사용하시면 많은 도움이 됩니다.
참고 자료
- 파이썬 공식 문서: datetime 모듈 (https://docs.python.org/ko/3/library/datetime.html)
- 파이썬 공식 문서: time 모듈 (https://docs.python.org/ko/3/library/time.html)
함께 보면 좋은 이전 게시글
- 파이썬 파일 처리 방법: 파일 생성 및 읽기와 쓰기
- 파이썬 모듈: 생성, 임포트, sys.path, PYTHONPATH 환경 변수
- 파이썬 함수 사용법: 매개변수와 인수, 람다 함수
- 파이썬 프로그램의 입력과 출력: 파일 IO, 명령행 인자 처리
- 파이썬 클래스와 객체: 상속, 생성자, 메서드 오버라이딩 사용하기
이 글이 도움이 되셨다면 공유를 부탁 드립니다. 다음 글에서 뵙겠습니다!