안녕하세요 독학코딩입니다. 오늘은 파이썬 datetime에대해서 배워보겠습니다. 파이썬에 기본적으로 포함된 패키지로 날짜와 시간을 다룰때 사용하는 패키지 입니다. datetime은 date, time, datetime의 class를 갖고 있습니다. class가 무엇인지 모르신다면 그냥 datetime의 기능들이라고 생각하시면 됩니다. date는 날짜를 다루는 기능, time은 시간을 다루는 기능, datetime은 날짜와 시간을 다루는 기능입니다.
1. Python datetime의 date
import datetime
print(datetime.date.today()) # 오늘 날짜 출력
print(datetime.date(2021,12,5)) # int를 date 타입으로 변경
print(type(datetime.date(2021,12,5)))
print(datetime.date.fromisoformat("2021-12-01")) # str을 date 타입으로 변경
datetime.date의 가장 기본적인 사용법은 .today()를 통해서 오늘의 날짜를 찾거나 주어진 숫자, 글짜를 날짜형태로 변경하는데 많이 사용됩니다. type()을 print()해보셨다면 아시겠지만, datetime에서 출력되는 날짜는 그냥 str이 아닙니다.
today = datetime.date.today()
print(datetime.date.weekday(today)) # 요일 출력 0 = 월요일, 6 = 일요일
print(datetime.date.isoweekday(today)) # 요일 출력 1 = 월요일, 7 = 일요일
print(datetime.date.strftime(today, "%d-%m-%Y")) # 출력 형식 지정, Y = 연, m = 월, d = 일
print(datetime.date.strftime(today, "%A %d. %B %Y")) # A = 영어 요일, B = 영어 월
print(datetime.date.strftime(today, "%a %d. %b %y"))
날짜만으로 충분하지 않거나 날짜를 표현하는 방식을 바꾸고 싶다면 위의 경우를 사용하시면 됩니다. %다음에 약속된 알파벳을 배치하면 날짜를 표현하는 방식을 변경할 수 있습니다. 약속된 알파벳은 아래의 링크를 참조하시면 됩니다.
strftime의 형식에 대해서 자세히 알고 싶다면 이 링크 참조
today = datetime.date.today()
print(today + datetime.timedelta(days=2)) # 2일 더하기
print(today + datetime.timedelta(weeks=4)) # 4주 더하기
print(today - datetime.timedelta(days=2)) # 2일 빼기
print(today < today + datetime.timedelta(days=2)) # 비교연산도 가능
print(today > today + datetime.timedelta(days=2))
print(today == today + datetime.timedelta(days=2)) # 등호연산도 가능
datetime의 패키지를 쓰는 가장 많은 이유 중 하나가 위와같이 날짜끼리 비교하거나 특정 일을 더할 때 인것 같습니다. 잘 알아두시면 좋습니다.
또 팁을 한가지 드리자면 위에 모든 예제에서 datetime.date가 반복되는걸 보실 수 있으실겁니다.
from datetime import date
print(date.today())
패키지를 import할 때 위와 같이 특정 class를 지정하여 import하면 매번 datetime.date 하실 필요없이 바로 date class를 호출할 수 있습니다. 다만 이럴경우 datetime의 date만 import 한 것이기 때문에 datetime의 다른 class를 사용할 수가 없습니다.
import datetime
date = datetime.date
print(date.today())
그래서 저는 보통 위와 같이 합니다. datetime의 모든 class를 사용할 수도 있고, date를 줄여 쓸수도 있습니다.
2. Python datetime의 datetime
datetime에서 가장 많이 쓰는 class는 역시 datetime class입니다. 패키지의 이름과 class의 이름이 동일하니 조금 헷갈리지만 그냥 같은거라고 생각하셔도됩니다. datetime을 쓸땐 거의 datetime class만 씁니다.
아래에선 datetime.datetime 을 dt로 정의하고 사용하겠습니다.
import datetime
dt = datetime.datetime
today = dt.today()
print(dt.today()) # 현재 지역의 날짜와 시간 출력
print(dt.now())
print(dt.fromisoformat("2012-12-22")) # str을 datetime 타입으로 변경
print(dt.fromisocalendar(2012, 10, 7)) # 몇년 몇번째 주 몇번째 일을 인자로 넣으면 당일 날짜가 나옵니다.
print(dt.strftime(today, "%a %d. %b %Y"))
datetime class는 date class의 거의 모든 기능을 똑같이 사용하신다 생각하시면 됩니다. date class에 time까지 더해져서 출력되는 것만 다릅니다.
print(dt.weekday(today)) # 요일 출력 0 = 월요일, 6 = 일요일
print(dt.isoweekday(today)) # 요일 출력 1 = 월요일, 7 = 일요일
print(today + datetime.timedelta(days=2)) # 연산도 모두 가능
print(today + datetime.timedelta(weeks=4))
print(today - datetime.timedelta(days=2))
print(today < today + datetime.timedelta(days=2))
print(today > today + datetime.timedelta(days=2))
print(today == today + datetime.timedelta(days=2))
'Python > Python 패키지' 카테고리의 다른 글
Python 파이썬 랜덤 숫자, 랜덤 문자, random() 다루기 (0) | 2022.01.05 |
---|---|
Python 파이썬 엑셀 다루기, pandas 패키지 (0) | 2022.01.04 |
Python 파이썬 Math 올림, 내림, 반올림 (0) | 2021.12.10 |
Python 파이썬 pandas 기초 (0) | 2021.12.03 |
Python 파이썬 패키지 설치 방법 (0) | 2021.11.30 |
댓글